custom page.tpl.php для просмотра друпалов - PullRequest
3 голосов
/ 02 декабря 2010

Как я могу создать собственный page.tpl.php для определенного вида?

Я не говорю о стилизации самого представления, просто о странице, на которой отображается это представление.

Спасибо.

@ Кит Морган - Это страница.

Ответы [ 8 ]

7 голосов
/ 20 июня 2012

за решение Allartk
В Drupal 7 template.php:

function <theme>_preprocess_page(&$variables) {
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") {
      $variables['theme_hook_suggestions'][] = 'page__views__galleries';
    }
}

Затем в каталоге вашей темы создайте файл page - views - galleries.tpl.php. Очистить кеш друпал и шаблон должен работать. Я использовал «галереи» в качестве примера имени представления.

5 голосов
/ 03 декабря 2010

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

В конструкторе представлений щелкните ссылку «Тема» в «Базовых настройках». Вы увидите некоторые параметры именования файлов шаблонов в зависимости от того, хотите ли вы тематизировать весь вид (например, views-view - example - page.tpl.php), каждую строку (например, views-view-fields - пример --page.tpl.php) и т. д.

Скопируйте соответствующий шаблон, который вы хотите настроить, из / sites / all / modules / views / theme в свою тему и настройте по своему желанию.

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

Надеюсь, это поможет.

4 голосов
/ 02 декабря 2010

Есть некоторая документация по шаблонным предложениям , и вас могут заинтересовать page.tpl.php подсказки .Если это просмотр страницы, вы можете использовать предложение пути.Таким образом, если ваш взгляд на http://www.example.com/photos,, файл page.tpl.php будет иметь имя page-photos.tpl.php.

2 голосов
/ 11 мая 2012

В тему drupal 7 я добавил предложение шаблона в template.php:

function sovon_preprocess_page(&$variables) {   
if(views_get_page_view())   {
    $variables['theme_hook_suggestions'][] = 'page__view';      
}
}

См. http://api.drupalize.me/api/drupal/function/views_get_page_view/7 и http://drupal.org/node/223440#custom-suggestions для получения дополнительной информации.

2 голосов
/ 13 августа 2011

Была похожая проблема, которая была исправлена ​​путем помещения .tpl.php в папку шаблонов моей темы. Соглашение об именах для отображения страниц представлений в drupal 7 - page-path-to-view.tpl.php

1 голос
/ 06 мая 2011

Используя предложение Sillygwailo, я очень хорошо сработал для этого:

function YOUR-THEME-NAME_preprocess_page(&$vars) {

 //allow template suggestions based on url paths.  
 $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 
 if ($alias != $_GET['q']) { $suggestions = array();
 $template_filename = 'page'; 
 foreach (explode('/', $alias) as $path_part) {
 $template_filename = $template_filename . '-' . $path_part; 
 $suggestions[] = $template_filename;
 } 
 $alias_array = explode('/', $alias);
 $variables['template_files'] = $suggestions; 

Тогда, если ваш взгляд на www.example.com/photos, создайте страницукаталог темы и drupal будет использовать его в качестве шаблона.

1 голос
/ 02 декабря 2010

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

0 голосов
/ 07 августа 2012

Если этот проверенный ответ не работает (потому что он не работает для меня), вы можете создать страницу - (urlname) .tpl.php, а затем оформить свою тему так, как вы этого хотите. Затем вы можете импортировать ваш вид одним из нескольких способов ...

       print render($page['content']);  

или

$ view = views_get_view ('viewname'); напечатать $ view-> execute_display ('default', $ args);

$ args - это просто массив, который может быть пустым ... вы можете просто полностью его исключить

...