2012-03-28 3 views
0

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

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

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

ответ

1

Если вы хотите сделать это специально для страниц узлов, вам будет лучше реализовать 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'); 
    } 
} 

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

+0

Эй, хвастайтесь, большое спасибо за ваш ответ. Я попробую и запомню здесь, как это работает. – newz2000

Смежные вопросы