2013-07-09 3 views
0

Когда вызывается страница, я хочу проверить вызов в зависимости от пути, я хочу перенаправить пользователя на главную страницу с некоторыми параметрами. Эти параметры я буду использовать в блоке, чтобы показать дополнительную информацию посетителю.Первый крючок Drupal pagecall

Какой крючок следует использовать, чтобы drupal выполнял наименее ненужную работу?

ответ

0

1) Функция template_preprocess_page является подходящим здесь.

2) Альтернативный вариант - использовать модуль Rules.

Событие: Drupal инициализируется (с использованием hook_init) Условия: Выполнение пользовательского PHP кода (проверьте путь аргумент) действий: Page редиректа, Другое правила действия (например, сообщение)

Я хотел бы предложить шоу а Сообщение Drupal пользователю вместо блока. За исключением случаев, когда пользователь зарегистрирован и параметры, показанные в блоке, существуют в базе данных, поэтому вы можете использовать модуль views для создания этого блока.

Вот экспорт правила, который перенаправляет, если отображение страницы таксономии относится к словарю «4». Импортируйте его в свои правила, чтобы увидеть результаты.

{ "rules_taxonomy_redirect_business" : { 
    "LABEL" : "Taxonomy redirect - Business", 
    "PLUGIN" : "reaction rule", 
    "TAGS" : [ "redirect", "taxonomy" ], 
    "REQUIRES" : [ "php", "rules" ], 
    "ON" : [ "init" ], 
    "IF" : [ 
     { "php_eval" : { "code" : "$check1 = (arg(0)==\u0027taxonomy\u0027)\u0026\u0026(arg(1)==\u0027term\u0027);\r\n$check2 = (arg(3)!=\u0027edit\u0027);\r\n\r\nif (arg(2)) {\r\n$tid = arg(2);\r\n$vid = db_query(\u0027SELECT vid FROM {taxonomy_term_data} WHERE tid = :tid\u0027, array(\u0027:tid\u0027 =\u003E $tid))-\u003EfetchField();\r\n$check3 = ($vid == \u00274\u0027);\r\n}\r\n\r\nreturn ($check1)\u0026\u0026($check2)\u0026\u0026($check3);" } } 
    ], 
    "DO" : [ 
     { "redirect" : { "url" : "\u003C?php\r\n$tid = arg(2);\r\nreturn \u0027business?cat%5B%5D=\u0027 . $tid;\r\n?\u003E" } } 
    ] 
    } 
} 
+0

Правила могут быть использованы. Но речь не идет о том, как его реализовать, но как можно раньше подключайтесь к drupal, так что наименьшее количество работы должно быть выполнено drupal. На данный момент я использую hook_init, но это означает, что многие ненужные коды были выполнены drupal allready. – Nealv

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