Drupal 7 препроцессорный одиночный узел
Возможно ли создать препроцесс для одного узла? Например, это универсально для всех узлов:
function template_preprocess_node(&$variables) {}
мы также можем вызвать что-то для одного узла? как это? Я пробовал различные решения, но не работает.
function template_preprocess_node__mynode(&$variables) {}
1 ответ
Решение
Я бы сделал это, используя ту же задачу, которую использует дзен.
function mytheme_preprocess_node(&$variables, $hook) {
// Optionally, run node-specific preprocess functions, like
// mytheme_preprocess_node_1().
$function = __FUNCTION__ . '_' . $variables['node']->nid;
if (function_exists($function)) {
$function($variables, $hook);
}
}
Благодаря if (function_exists($function))
Немного вы можете просто реализовать функцию для любого конкретного nID, который вы пожелаете, и он найдет и выполнит их. Просто убедитесь, что вы проходите в &$variables
параметр в качестве ссылки (с &
) или ни одно из ваших изменений не найдет выхода из функции.