Drupal 6: Drupal Themer дает одно и то же имя кандидата для разных типов типов контента - PullRequest
2 голосов
/ 03 июня 2010

Я новичок друпал ...

У меня другой тип контента, такой как Новости, События и т. Д., И у них другой контент. Страница сведений о новостях содержит заголовок-текст-дату. но страница сведений о событиях имеет заголовок-дата-содержимое text-location-speaker-etc. Поэтому мне нужны разные страницы макета для этих разных типов. Итак, я позволил Drupal Themer получить имя кандидата. для страницы событий, он дал мне page-node.tpl.php , и он также дает то же самое для страницы новостей :( как я могу разделить эти страницы? Я ожидал, что page-event-node .tpl , но не ...: / Drupal Themer также дает уникальное имя кандидата для страницы события, например page-node-18.tpl.php , но это ничего не значит, так как я не могу создать общий макет для всех событий по этому имени узла.: (

Ценить помогает так много! Большое спасибо !!!

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

Хотя использование разных файлов node.tpl.php в соответствии с предложением monkeyninja (+1) будет «нормальным» способом, вы можете добавить желаемую функциональность, добавив предложения шаблона страницы на основе типа узла самостоятельно, в preprocess_page функция в пользовательском модуле / теме:

function yourModuleOrTheme_preprocess_page(&$variables) {
  // If this is a node page, add a page template suggestion based on node type
  if (isset($variables['node'])) {
    // Build the suggestion name ('.tpl.php' suffix will be added by the theming system)
    $suggestion = 'page-type-' . $variables['node']->type;
    // Add to end of suggestion array, thus keeping the fallback to other suggestions,
    // if this specific version is not implemented by the theme
    $variables['template_files'][] = $suggestion;
  }
} 

Имея это, вы сможете добавить, например, файл 'page-type-event.tpl.php',который должен использоваться для всех страниц узла событий.

(ПРИМЕЧАНИЕ. Вам нужно будет инициировать перестройку реестра тем после добавления этой функции, чтобы она распознавалась системой)

2 голосов
/ 03 июня 2010

Я не знаком с Drupal Themer, но немного другой подход будет работать с шаблонами узлов, чтобы стилизовать контент и использовать что-то вроде превосходного Контекстного модуля (и, возможно, Панелей модуль ) для изменения макета любой дополнительной информации на странице (например, блоков).

Чтобы тематически оформить различные типы контента с помощью шаблонов узлов, просто создайте шаблоны на основе node.tpl.php в форме node-content_type.tpl.php. Таким образом, у вас будет шаблон для ваших узлов событий, называемый node-events.tpl.php.

Затем можно определить контекст с помощью модуля «Контекст», который реагировал на отображение страницы с типом содержимого событий, и выбрать, какие области / блоки вы хотите отобразить.

...