Предлагая различные шаблоны при оформлении темы узла - PullRequest
1 голос
/ 18 февраля 2011
function posts_theme($existing, $type, $theme, $path) {
  return array(
      'post_node_form' => array(
        'arguments' => array('form' => NULL),
        'template' => VARIABLE,
      )
  );
}

Это способ предложить шаблон для рендеринга 'post_node_form' в Drupal 6. НО я хочу получить форму редактирования узла из 2 разных путей:

  • через AJAX через drupal_get_form ('post_node_form')
  • через узел по умолчанию / add / post

Если я заменю «VARIABLE» в зависимости от пути (или любого другого условия), он не будет работать, потому что кажется? имя шаблона кэшируется, и для его обновления необходимо очистить кэш.

Любое решение предложить различные шаблоны форм?

Примечание. Это не относится к шаблону узла (тогда вы можете поместить предложения шаблона в ловушки препроцесса). Речь идет об узле FORM.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

Хорошо, я отвечаю на свой вопрос:

Ключом решения является ловушка preprocess_NAME_OF_MY_FORM, которая выполняется при каждой загрузке страницы и может быть в вашем модуле или вашей теме.

Итак, в моем случае я написал в своем модуле "posts":

/**
 * Implementation of hook_theme().
 */
function posts_theme($existing, $type, $theme, $path) {      
  return array(
      'post_node_form' => array(
        'arguments' => array('form' => NULL),
        'template' => 'post-form-custom',

      )
  );
}

function posts_preprocess_post_node_form(&$vars) {   
   // I check the path to know if node_form is retrieve through normal way or ajax way.      
   if (check_plain(arg(0)) == 'node'){
      $vars['template_files'][] = 'post-form-default';
   }
}

В папке моего модуля были файлы post-form-custom.tpl.php и post-form-default.tpl.php

0 голосов
/ 20 февраля 2011

Добавьте эту функцию / или измените, если существует в template.php вашей темы:

function phptemplate_preprocess_page(&$vars) {
  // ...
  $node = menu_get_object();
  if ($node->type == 'post') {
    $vars['template_files'][] = VARIABLE;
  } 
  // ...
}
...