На сайте Drupal PHP-код включен для содержимого тела страницы. Как я могу получить аргумент и его значение в PHP-коде? Например, я хотел бы получить ref
и 33002
:
http://example.com/node/1?ref=33002
В следующем коде:
<?php print arg(0); print arg(1); print arg(2); print arg(3); ?>
Я могу получить node
и 1
, но ничего о ref
или 33002
.
Благодаря!
Использовать это:
<?php $a=$_REQUEST['ref']; echo "The value of the ref parameter is ".$a; ?>
Вы можете использовать drupal_get_query_parameters () следующим образом:
$params = drupal_get_query_parameters(); if (isset($params['ref']) && is_numeric($params['ref'])) { var_dump(check_plain($params['ref'])); }
Решение, выполненное с помощью скопированных работ, но «путь Drupal» заключается в передаче значения ref в качестве аргумента url, то есть:
http://example.com/node/1/33002
Теперь вы можете получить доступ к значению ref с помощью функции arg ():
$ref = arg(2);
Конечно, такой подход может работать, только если значение ref всегда является третьим аргументом.
Несмотря на то, что приведенный выше код работает, не рекомендуется размещать скрипты php в корпусе узла. Это делает ваш сайт сложнее поддерживать и отлаживать. Настанет день, когда редактор удалит ваш php-узел случайно, тем самым сломав ваш сайт.
Если у вас есть скрипт php, который вы хотите запустить, лучший способ – добавить на свой сайт простой пользовательский модуль, который реализует hook_menu. Посмотрите модуль меню или этот модуль hello world, чтобы узнать больше о hook_menu.
Наконец, независимо от выбранного вами метода (php-узлы или настраиваемый модуль) всегда проверяйте ввод URL- адресов , например, с помощью check_plain () .