2010-07-28 4 views
4

У меня есть два файла шаблонов страниц, один из которых является только «page.tpl.php», а другой для подмножества страниц.Как использовать различные шаблоны страниц drupal?

Как применить этот другой шаблон только для определенных страниц, а остальное по умолчанию - page.tpl.php?

Спасибо! Я на Drupal 6.

ответ

7

В Drupal шаблоны следуют так называемым «предложениям».

Для страниц предложения создаются с использованием URL-адреса.

На странице/Foo/бар вы можете назвать page.tpl.php следующим образом:

  • page.tpl.php
  • страниц foo.tpl.php
  • страница-Foo-bar.tpl. php

Drupal будет выглядеть от более специфичного до наименее специфичного и выбрать первый найденный. Если найдена страница-foo-bar.tpl.php, она будет использовать это для foo/bar, если не найдена, что она будет выглядеть. Если тогда он найдет page-foo, он будет использовать это.

page-foo.tpl.php также будет использоваться для/foo/beserk foo/pirate и foo/parrot, если не считать конечно, вы создаете страницу-foo-parrot.tpl.php.

На первой странице нет пути (очевидно), но предложение для fron-страницы существует: page-front.tpl.php будет использоваться только для главной страницы.

+0

Если вы хотите узнать предложения шаблона для любой части контента, использовать http://drupal.org/project/devel_themer, который добавляет своего рода консоль firebug, которая позволяет вам выбрать любой элемент на вашей странице и отобразит много информации о теме для этого. включая все предложения. – berkes

+1

Разве это не двойная черта i.e. страница - foo, а не page-foo? – anthonygore

0

Вы также можете проверить модуль Sections, он позволяет выбрать отдельную тему для набора страниц. Выбор страниц такой же, как на странице конфигурации дисплея блока. Показывать на каждой странице, кроме перечисленных страниц. Показывать только перечисленные страницы. Покажите, возвращает ли следующий код PHP TRUE.

Я использовал его на одном из сайтов, которые я создал, и он отлично работает.

+0

Мне нравится этот модуль: P – berkes

+0

Хотя, если вам нужно изменить page.tpl.php в зависимости от страницы, вам нужно использовать другие предложения. Извините, если я не помогу. – NPC

5

В дополнение к системе внушения Drupal по умолчанию, вы можете реализовать template_preprocess_page в вашей теме и изменить массив шаблон для предложений:

function my_theme_preprocess_page(&$vars) { 
    if ($vars['some_var'] == 'some_value') { 
    $vars['template_files'][] = "page-special"; 
    } 
} 

См Working with template suggestions.

Вы также можете заставить файл шаблона, а не добавляя предложение:

function my_theme_preprocess_page(&$vars) { 
    if ($vars['some_var'] == 'some_value') { 
    $vars['template_file'] = "page-special"; 
    } 
} 
+0

Ответ не работал в drupal 7, используя '$ vars ['theme_hook_suggestions'] [] = 'page__special';' работал, т. Е. Загружал 'page - special.tpl.php' в мой каталог тем – Ejaz

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