Debe usar el siguiente código, ya que url()devuelve la URL de la ruta pasada como argumento; por lo tanto, devuelve un valor que la instrucción IF consideraría equivalente a TRUE(excepto en el caso de que la cadena sea "0"o sea una cadena vacía).
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 (procesal)
// 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){}}}
Si no desea tener una plantilla de página diferente para páginas con una URL específica, puede verificar la URL actual utilizando el siguiente código.
if(arg(0)=='the'&& arg(1)=='path'){// Add the extra CSS class.}
url () no es la función que devuelve la URL de la página actual; si llama url()sin proporcionar ningún parámetro, obtendría (al menos en Drupal 7 y sin que ningún módulo implemente hook_ulr_outbound_alter()) la URL base de la instalación de Drupal.
Llamar url('the/path')solo lo devolverá "the/path", si ningún módulo está alterando el valor devuelto por la función; eso significa que el código que ha mostrado siempre se ejecutará y la clase CSS siempre se agregará.
Si está buscando la ruta canónica por la que Drupal está sirviendo una solicitud, puede presionar $ _GET ['q'], que debería traducirse incluso si Drupal está utilizando URL limpias.
Respuestas:
Debe usar el siguiente código, ya que
url()
devuelve la URL de la ruta pasada como argumento; por lo tanto, devuelve un valor que la instrucción IF consideraría equivalente aTRUE
(excepto en el caso de que la cadena sea"0"
o sea una cadena vacía).fuente
Drupal's Alias es lo que buscas
Otros a continuación:
URL completa
URL "interna" de Drupal
fuente
Drupal 7
Drupal 8 (procesal)
Drupal 8 (OOP)
Fuente: arg () está en desuso y se eliminará en Drupal.org
fuente
¿Has probado request_uri ()?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
fuente
Querrás usar la función arg (). Puedes usarlo de dos maneras,
Lo que básicamente le dará una matriz con cada argumento de url como otro valor, o puede verificar argumentos específicos de esta manera:
Entonces, para su ejemplo, podría hacer:
o recomendaría esto:
fuente
$arg = implode('/',arg());
Si no desea tener una plantilla de página diferente para páginas con una URL específica, puede verificar la URL actual utilizando el siguiente código.
url () no es la función que devuelve la URL de la página actual; si llama
url()
sin proporcionar ningún parámetro, obtendría (al menos en Drupal 7 y sin que ningún módulo implementehook_ulr_outbound_alter()
) la URL base de la instalación de Drupal.Llamar
url('the/path')
solo lo devolverá"the/path"
, si ningún módulo está alterando el valor devuelto por la función; eso significa que el código que ha mostrado siempre se ejecutará y la clase CSS siempre se agregará.fuente
Si está buscando la ruta canónica por la que Drupal está sirviendo una solicitud, puede presionar $ _GET ['q'], que debería traducirse incluso si Drupal está utilizando URL limpias.
fuente
Drupal 8:
alternativa arg () ya que ya no funciona:
Leer más: https://www.drupal.org/node/2274705
fuente