Запуск PHP-кода на определенных узлах Drupal - PullRequest
0 голосов
/ 28 марта 2012

В моей установке Drupal 6 фильтр php отключен, поэтому я не могу использовать <?php ... ?> в самом узле.

У меня есть случай, когда мне нужно запустить немного кода PHP на небольшом количестве страниц. Есть ли способ в Drupal 6 создать модуль, который будет соответствовать шаблону URL, а затем перед отображением страницы выполнить функцию?

В частности, на нескольких страницах мне нужно обработать некоторые данные и затем отправить заголовок HTTP. Я знаю, что могу создать собственный файл .tpl для этих страниц, но поместить логику приложения, подобную этой, в файл .tpl, похоже на хак.

1 Ответ

1 голос
/ 28 марта 2012

Если вы хотите сделать это специально для страниц узлов, вам лучше реализовать hook_nodeapi(). Это означает, что вам не нужно выполнять сопоставление на основе URL, и вы можете добавить свой заголовок наиболее «структурированным» способом:

function MYMODULE_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == 'view') {
    drupal_set_header('some header');
  }
}

Если вам нужно сделать это для неузловых страниц, вам нужно реализовать hook_init() вместо:

function MYMODULE_init() {
  if ($_GET['q'] == 'node/1') { // or whatever path
    drupal_set_header('some header');
  }
}

Обе ловушки вызываются задолго до того, как заголовки отправляются клиенту, так что в любом случае будет работать.

...