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 параметр в качестве ссылки (с &) или ни одно из ваших изменений не найдет выхода из функции.

Другие вопросы по тегам