2013-09-09 2 views
0

Возможно ли создать предварительный процесс для одного узла? Например, это является общим для всех узлов:Drupal 7 preprocess single node

function template_preprocess_node(&$variables) {} 

мы можем назвать что-то для одного узла, как это? я пробовал различные решения, но не работал.

function template_preprocess_node__mynode(&$variables) {} 

ответ

2

Я выполнил бы это, используя ту же задачу, что и дзэн.

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)) бит вы можете просто реализовать функцию для какой бы конкретные НДИ вы хотите, и она будет найти и выполнить их. Просто убедитесь, что вы передаете параметр &$variables в качестве ссылки (с помощью &), иначе ни одно из ваших изменений не найдет выход из функции.

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