Создание нескольких страниц page.tpl для разных групп страниц в Drupal 7 - PullRequest
0 голосов
/ 15 ноября 2011

сайт, который я сейчас создаю в Drupal, разделен на две совершенно разные области, обе из которых имеют совершенно разную структуру. Мое решение состоит в том, чтобы создать две разные страницы page.tpl. Кто-нибудь знает, как проще всего реализовать это в Drupal 7. Это процесс соглашения об именах, такой как страница node.tpl, или мне нужно будет вставить функцию предварительной обработки на страницу template.php.

Ура за любую помощь!

Ответы [ 5 ]

3 голосов
/ 15 ноября 2011

Вы также можете прикрепить функцию preprocess в ваш файл template.php.Примерно так:

function yourthemename_preprocess_page(&$vars, $hook) {  
    if (isset($vars['node'])) {  
        // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".  
        $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;  
    }  
}
1 голос
/ 15 ноября 2011

Посмотрите на эту страницу: http://drupal.org/node/1089656

В нем объясняется схема именования файлов шаблонов и способы расширения предложений шаблонов.

В вашем случае вам придется реализовать функцию theme_get_suggestions(). В этой функции вы можете проверить аргументы пути, чтобы определить, какую страницу нужно отображать, и добавить соответствующие предложения.

0 голосов
/ 31 января 2014
function your_theme_preprocess_node(&$variables) {
  // Add specific templates.
  foreach ($variables['theme_hook_suggestions'] as $theme_suggestion) {
    $variables['theme_hook_suggestions'][] = $theme_suggestion . '__' . $node->view_mode;
  }
}

также вы можете вызвать функцию препроцесса здесь, если добавите этот код

  // Run specific preprocess function.
  $preprocess = 'your_theme_preprocess_node_' . $node->type . '__' . $node->view_mode;
  if (function_exists($preprocess)) {
    $preprocess($variables);
  }

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

0 голосов
/ 30 января 2014

Вы можете использовать модуль Context .

В данном контексте вы можете добавить реакцию «Шаблон предложения».Это позволит вам указать дополнительные файлы шаблонов, которые переопределят значения по умолчанию.Подробности смотрите в очереди «Контекст», Добавьте реакцию «Шаблон предложения» .

При таком подходе не нужно писать код модуля.

0 голосов
/ 16 ноября 2011

Я не понимаю. Если вы хотите использовать два разных файла шаблона, просто создайте два разных типа контента, и вы можете обойти все это кодирование.

дайте мне знать, если вам нужна дополнительная помощь. Вишал

...