Powinieneś użyć następującego kodu, ponieważ url()zwraca adres URL ścieżki przekazanej jako argument; dlatego zwraca wartość, którą instrukcja IF uznałaby za równoważną TRUE(z wyjątkiem przypadku, gdy łańcuch jest "0"lub jest łańcuchem pustym).
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 (proceduralny)
// 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){}}}
Jeśli nie chcesz mieć innego szablonu strony dla stron o określonym adresie URL, możesz sprawdzić bieżący adres URL, używając następującego kodu.
if(arg(0)=='the'&& arg(1)=='path'){// Add the extra CSS class.}
url () nie jest funkcją, która zwraca adres URL bieżącej strony; jeśli zadzwonisz, url()nie podając żadnych parametrów, otrzymasz (przynajmniej na Drupal 7 i bez implementacji modułów hook_ulr_outbound_alter()) podstawowy adres URL instalacji Drupal.
Wywołanie url('the/path')zwróci tylko "the/path", jeśli żaden moduł nie zmienia wartości zwracanej z funkcji; oznacza to, że pokazany kod będzie zawsze wykonywany, a klasa CSS zawsze dodawana.
Jeśli szukasz kanonicznej ścieżki, dla której Drupal obsługuje żądanie, możesz nacisnąć $ _GET ['q'], co powinno zostać przetłumaczone, nawet jeśli Drupal używa czystych adresów URL.
Odpowiedzi:
Powinieneś użyć następującego kodu, ponieważ
url()
zwraca adres URL ścieżki przekazanej jako argument; dlatego zwraca wartość, którą instrukcja IF uznałaby za równoważnąTRUE
(z wyjątkiem przypadku, gdy łańcuch jest"0"
lub jest łańcuchem pustym).źródło
Drupal's Alias jest tym, czego szukasz
Inne poniżej:
Pełny adres URL
„Wewnętrzny” adres URL Drupala
źródło
Drupal 7
Drupal 8 (proceduralny)
Drupal 8 (OOP)
Źródło: arg () jest przestarzałe i zostanie usunięte z Drupal.org
źródło
Próbowałeś request_uri ()?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
źródło
Będziesz chciał użyć funkcji arg (). Możesz użyć tego na dwa sposoby,
Co w zasadzie da ci tablicę z każdym argumentem URL będącym inną wartością, lub możesz sprawdzić konkretne argumenty w ten sposób:
Na przykład możesz wykonać:
lub poleciłbym to:
źródło
$arg = implode('/',arg());
Jeśli nie chcesz mieć innego szablonu strony dla stron o określonym adresie URL, możesz sprawdzić bieżący adres URL, używając następującego kodu.
url () nie jest funkcją, która zwraca adres URL bieżącej strony; jeśli zadzwonisz,
url()
nie podając żadnych parametrów, otrzymasz (przynajmniej na Drupal 7 i bez implementacji modułówhook_ulr_outbound_alter()
) podstawowy adres URL instalacji Drupal.Wywołanie
url('the/path')
zwróci tylko"the/path"
, jeśli żaden moduł nie zmienia wartości zwracanej z funkcji; oznacza to, że pokazany kod będzie zawsze wykonywany, a klasa CSS zawsze dodawana.źródło
Jeśli szukasz kanonicznej ścieżki, dla której Drupal obsługuje żądanie, możesz nacisnąć $ _GET ['q'], co powinno zostać przetłumaczone, nawet jeśli Drupal używa czystych adresów URL.
źródło
Drupal 8:
Arg () alternatywa, ponieważ nie działa już:
Czytaj więcej: https://www.drupal.org/node/2274705
źródło