Шаблон для типа материала и зависимых от него представлений

Главные вкладки

Аватар пользователя lionman lionman 9 августа 2013 в 7:20

Здравствуйте. Создал отдельный шаблон для типа материала. Создал вьюху в виде блока с фотографиями заведения и кнопкой еще, если фотографий больше чем допустимо в блоке. Для странице еще фото создал путь /node/%/image

В общем все работает. Только одно НО.
Заведение допустим расположено по ссылке /node/2 - и здесь шаблон для типа материала заведения, работает прекрасно.
При переходе на изображения /node/2/image - шаблон выводиться как для всего сайта, а нужно чтобы шаблон был как у типа материала заведения.

Как РЕШИТЬ ПРОБЛЕМУ. Заранее спасибо.

Комментарии

Аватар пользователя graker graker 9 августа 2013 в 11:44

Quote:
При переходе на изображения /node/2/image - шаблон выводиться как для всего сайта, а нужно чтобы шаблон был как у типа материала заведения.

А вьюз никак не связан с шаблонами материалов по умолчанию - ему сказали вывести картинки, он выводит картинки.
Два варианта:

Первый (тупой, без извращений) - берем шаблон вывода вьюза (см. информацию о темизации в настройках) и копипастим в него те элементы шаблона материала, которые надо.

Второй (с извращениями) - берем материал "заведение" и добавляем ему новый тип отображения (который custom display, он же view mode), например "images". В этом типе отображения настраиваем вывод картинок как надо. Во вьюзе говорим "выводить материал целиком в созданном типе отображения".
Но это неочевидный вариант, его лучше не использовать, мне кажется. Кроме того, тогда надо entity view modes ставить или display suite.

Аватар пользователя lionman lionman 9 августа 2013 в 12:05

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

Вопрос, по первому решению. Шаблоны из пункта ИНФОРМАЦИЯ ТЕМИЗАЦИЯ:

Вывод отображения: views-view.tpl.php, views-view--logo.tpl.php, views-view--default.tpl.php, views-view--default.tpl.php, views-view--block.tpl.php, views-view--logo--block.tpl.php

И что нужно сделать из моего шаблона page--zavedeniya сделать копипаст в ?????

Аватар пользователя graker graker 9 августа 2013 в 16:29

Да это не ровное место, это от непонимания.

Quote:
И что нужно сделать из моего шаблона page--zavedeniya сделать копипаст в ?????

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

Аватар пользователя lionman lionman 12 августа 2013 в 6:47

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

Аватар пользователя lionman lionman 12 августа 2013 в 11:39

Да я понял как темизировать саму вьюху. Но как темизировать всю страницу с выводом этой вьюхи. У меня шаблон для заведений свой, а изображения относятся к этому шаблону.

Ну вот допустим создал я шаблон для вьюхи views-view--logo--zavimage.tpl

В него ввел все, с другого шаблона + где вывод контента, ввел содержимое в стандартном шаблоне вьюхи.

А вот такой вариант возможен? http://lab-sites.com/content/kak-tematizirovat-stranicu-views-v-drupal-7
Только почему то у меня он не работает.

У меня есть функция _preprocess_page

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

П.С. И я так понял, если у меня будет еще одна вьюха, допустим меню заведения, то и для этого представления надо будет делать свой шаблон.

Извините за возможно глупые вопросы.

Аватар пользователя serega111 serega111 12 августа 2013 в 13:54

Раз вы хотите изменить целиком страницу, тогда смотрите в сторону темизации страниц, а не вьюхи. В шаблоне страницы о контенте (вьюхе) ничего не известно, и в шаблоне вьюхе о темизации страницы ничего не известно, они независимы. так что сначала определитесь, что вам нужно изменить.
Как правильно построить название шаблона для страницы типа node/%/image я не знаю. Но можно в функции theme_preprocess_page сделать так:
<?php
$vars['theme_hook_suggestions'][] = 'your_template_name';
?>
https://drupal.org/node/223440#custom-suggestions