Вы должны использовать следующий код, так как url()возвращает URL для пути, переданного в качестве аргумента; следовательно, он возвращает значение, которому оператор IF будет считать эквивалентным TRUE(за исключением случая, когда строка является "0"или является пустой строкой).
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 (процедурный)
// 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 (ООП)
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){}}}
Вы также можете использовать$arg = implode('/',arg());
tim.plunkett
1
Если вы не хотите иметь другой шаблон страницы для страниц с определенным URL, вы можете проверить текущий URL, используя следующий код.
if(arg(0)=='the'&& arg(1)=='path'){// Add the extra CSS class.}
url () не является функцией, которая возвращает URL текущей страницы; если вы звоните url()без указания каких-либо параметров, вы получите (по крайней мере, на Drupal 7 и без каких-либо модулей hook_ulr_outbound_alter()) базовый URL установки Drupal.
Вызов url('the/path')просто вернет вас "the/path", если ни один модуль не изменяет значение, возвращаемое функцией; это означает, что код, который вы показали, всегда будет выполняться, а класс CSS всегда добавляется.
Если вы ищете канонический путь, по которому Drupal отправляет запрос, вы можете нажать $ _GET ['q'], что должно перевести, даже если Drupal использует чистые URL.
Ответы:
Вы должны использовать следующий код, так как
url()
возвращает URL для пути, переданного в качестве аргумента; следовательно, он возвращает значение, которому оператор IF будет считать эквивалентнымTRUE
(за исключением случая, когда строка является"0"
или является пустой строкой).источник
Псевдоним Drupal - это то, что вы ищете
Другие ниже:
Полный URL
Внутренний URL Drupal
источник
Drupal 7
Drupal 8 (процедурный)
Drupal 8 (ООП)
Источник: arg () устарела и будет удалена с Drupal.org
источник
Вы пробовали request_uri ()?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
источник
Вы захотите использовать функцию arg (). Вы можете использовать его одним из двух способов,
Который в основном даст вам массив с каждым аргументом URL, являющимся другим значением, или вы можете проверить конкретные аргументы, например, так:
Итак, для вашего примера вы можете сделать:
или я бы порекомендовал это:
источник
$arg = implode('/',arg());
Если вы не хотите иметь другой шаблон страницы для страниц с определенным URL, вы можете проверить текущий URL, используя следующий код.
url () не является функцией, которая возвращает URL текущей страницы; если вы звоните
url()
без указания каких-либо параметров, вы получите (по крайней мере, на Drupal 7 и без каких-либо модулейhook_ulr_outbound_alter()
) базовый URL установки Drupal.Вызов
url('the/path')
просто вернет вас"the/path"
, если ни один модуль не изменяет значение, возвращаемое функцией; это означает, что код, который вы показали, всегда будет выполняться, а класс CSS всегда добавляется.источник
Если вы ищете канонический путь, по которому Drupal отправляет запрос, вы можете нажать $ _GET ['q'], что должно перевести, даже если Drupal использует чистые URL.
источник
Drupal 8:
Альтернатива arg (), так как она больше не работает:
Подробнее: https://www.drupal.org/node/2274705
источник