Você deve usar o código a seguir, pois url()retorna a URL do caminho passado como argumento; portanto, ele retorna um valor que a instrução IF consideraria equivalente TRUE(exceto no caso de a cadeia ser "0"ou ser uma cadeia vazia).
if($_GET['q']=='the/internal/Drupal/path'){// Do stuff}
// Retrieve an array which contains the path pieces.
$path_args = arg();// Check if the current page is admin.if(arg(0)=='admin'){// This is wrong even in D7. path_is_admin() should be used instead.}// Conditionally add css or js in certain page.function mymodule_page_build(&$page){if(arg(0)=='sth'&& arg(1)=='else'){
drupal_add_css(drupal_get_path('module','mymodule').'/css/my.css');}}// Load the current node.if(arg(0)=='node'&& is_numeric(arg(1))){// This is wrong even in D7. menu_get_object() should be used instead.}
Drupal 8 (processual)
// Retrieve an array which contains the path pieces.
$path_args = explode('/', current_path());// Check if the current page is admin.if(\Drupal::service('router.admin_context')->isAdminRoute(\Drupal::routeMatch()->getRouteObject())){}// Conditionally add css or js in certain page.function mymodule_page_build(&$page){if(\Drupal::routeMatch()->getRouteName()=='my.route'){
$page['#attached']['css'][]= drupal_get_path('module','mymodule').'/css/my.css';}}// Load the current node.
$node = \Drupal::routeMatch()->getParameter('node');if($node){}
Drupal 8 (OOP)
useSymfony\Component\HttpFoundation\Request;useDrupal\Core\Routing\AdminContext;useDrupal\Core\Routing\RouteMatchInterface;class myClass {publicfunction __construct(Request $request,AdminContext $admin_context,RouteMatchInterface $route_match){
$this->request = $request;
$this->adminContext = $admin_context;
$this->routeMatch = $route_match;}publicfunction test(){// This might change in https://drupal.org/node/2239009
$current_path = $this->request->attributes->get('_system_path');// Retrieve an array which contains the path pieces.
$path_args = explode('/', $current_path);// Check if the current page is admin.if($this->adminContext->isAdminRoute($this->routeMatch->getRouteObject())){}// Load the current node.
$node = $this->routeMatch->getParameter('node');if($node){}}}
Se você não deseja ter um modelo de página diferente para páginas com um URL específico, verifique o URL atual usando o código a seguir.
if(arg(0)=='the'&& arg(1)=='path'){// Add the extra CSS class.}
url () não é a função que retorna a URL da página atual; se você telefonar url()sem fornecer nenhum parâmetro, obteria (pelo menos no Drupal 7 e sem a implementação de nenhum módulo hook_ulr_outbound_alter()) o URL base da instalação do Drupal.
A chamada url('the/path')apenas retornará você "the/path", se nenhum módulo estiver alterando o valor retornado da função; isso significa que o código que você mostrou sempre será executado e a classe CSS sempre adicionada.
Se você está procurando o caminho canônico pelo qual o Drupal está atendendo a uma solicitação, você pode pressionar $ _GET ['q'], que deve ser traduzido mesmo se o Drupal estiver usando URLs limpos.
Respostas:
Você deve usar o código a seguir, pois
url()
retorna a URL do caminho passado como argumento; portanto, ele retorna um valor que a instrução IF consideraria equivalenteTRUE
(exceto no caso de a cadeia ser"0"
ou ser uma cadeia vazia).fonte
O Alias do Drupal é o que você está procurando
Outros abaixo:
URL completo
URL "interno" de Drupal
fonte
Drupal 7
Drupal 8 (processual)
Drupal 8 (OOP)
Fonte: arg () está obsoleta e será removida no Drupal.org
fonte
Você já tentou request_uri ()?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
fonte
Você deseja usar a função arg (). Você pode usá-lo de duas maneiras,
O que basicamente fornecerá uma matriz com cada argumento de URL sendo outro valor, ou você pode verificar argumentos específicos como:
Então, para o seu exemplo, você pode fazer:
ou eu recomendo isso:
fonte
$arg = implode('/',arg());
Se você não deseja ter um modelo de página diferente para páginas com um URL específico, verifique o URL atual usando o código a seguir.
url () não é a função que retorna a URL da página atual; se você telefonar
url()
sem fornecer nenhum parâmetro, obteria (pelo menos no Drupal 7 e sem a implementação de nenhum módulohook_ulr_outbound_alter()
) o URL base da instalação do Drupal.A chamada
url('the/path')
apenas retornará você"the/path"
, se nenhum módulo estiver alterando o valor retornado da função; isso significa que o código que você mostrou sempre será executado e a classe CSS sempre adicionada.fonte
Se você está procurando o caminho canônico pelo qual o Drupal está atendendo a uma solicitação, você pode pressionar $ _GET ['q'], que deve ser traduzido mesmo se o Drupal estiver usando URLs limpos.
fonte
Drupal 8:
alternativa arg (), pois não funciona mais:
Leia mais: https://www.drupal.org/node/2274705
fonte