Как сделать разные View для разных типов материалов?

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

Аватар пользователя AffMaster AffMaster 24 мая 2008 в 2:08

Мне нужно изменить внешний вид страницы ноды, т.е. /node/%. В принципе это можно сделать с помощью Views, но проблема в том что есть несколько типов материалов и для каждого типа естественно нужен разный view. Но как это сделать? Урл страниц получается одинаковый, независимо от типа материала, задавать тип материала в фильтре тоже не помогает - view все равно срабатывает для всех типов материалов. Как решить эту проблему?

Комментарии

Аватар пользователя Nikit Nikit 24 мая 2008 в 3:27

что имеется в виду под "внешний вид" ноды? сама по себе нода не меняется через views, это меняется через темки.

Аватар пользователя AffMaster AffMaster 24 мая 2008 в 3:32

Имеется ввиду что мне нужно убрать некоторые поля, которые отображаются по умолчанию, например имя автора, дата публикации, и некоторые поля нужно добавить.

Аватар пользователя psyh psyh 22 апреля 2010 в 11:22

Такая же проблема. Создал два вида для разных типов материалов. Путь у видов /node/% Для каждого выставил фильтры по типу материала. По логике должно работать. Но упрямо применяется только один вид ко всем нодам.
Что можно сделать?

Аватар пользователя otmoroz otmoroz 12 мая 2010 в 17:05

аргументы. вот только аргументы берутся из урл, а тип материала в урл не передается, но все-равно там копаться надо!

Аватар пользователя godson godson 13 мая 2010 в 7:21

"Nikit" wrote:
это делается через тематизацию: http://www.drupal.ru/node/3583[/quote]
Вы видимо неверно поняли вопрос. Человеку нужно не сам контент ноды менять, а внешний вид сайта с расположением блоков.

У меня такой же точно вопрос, и я пока не вижу выхода. Создал отдельный тип материалов, где будут размещаться газетные публикации. Для этого мне нужна более широкая страница, и есть желание просто убрать правую колонку ТОЛЬКО для этого типа... Может быть еще кто-нибудь знает решение?

Аватар пользователя ihappy ihappy 13 мая 2010 в 7:50

"AffMaster" wrote:
Имеется ввиду что мне нужно убрать некоторые поля, которые отображаются по умолчанию, например имя автора, дата публикации, и некоторые поля нужно добавить.

Добавить поля можно при помощи ССК.
Убрать поля... ну дык темизация, копируешь файлик node.tpl.php, переименовываешь в node-ТИП_МАТЕРИАЛА.tpl.php
ну и там меняешь. В общем поиском порули, тут все давно уже описали.

Аватар пользователя psyh psyh 24 мая 2010 в 13:35

"otmoroz" wrote:
Ставьте фильтрацию по типу материала. Вкладывайте дисплеи с разными видами материалов, ферштейн? :)

Я так и делал, не помогает. В итоге сделал новый .tpl.php, не так страшен черт как казался, этот способ даже приятнее )

Аватар пользователя psyh psyh 12 августа 2010 в 18:21

Опять та же беда, только теперь с таксономией. Есть 2 типа материалов: рецепт и статья. Грубо говоря, каждый рецепт и каждая статья привязаны к терминам одного словаря. К примеру есть статьи привязанные к термину "Русская кухня", и есть рецепты привязанные к нему же.
На сами ноды я просто сделал свои шаблоны, это не проблема. А как быть с таксономией?

Я сделал вьюс типа page. выставил нужные мне поля для рецептов. В фильтре тип материала "Рецепт". Добавил аргумент term ID, и задал адрес taxonomy/term/%. Страницы терминов таксономиии теперь отлично показывают мне соответствующие рецепты. Всё как бы замечательно.

Но понадобилось мне таким же образом отображать статьи. А тут опять старые грабли. Создал вьюс для статей таким же образом. Но работает только один из вьюсов, что логично.
В общем сейчас у меня нет возможности отобразить даже самый примитивный список статей. Для юзеров их как бы нет.
Что можно сделать?

2 otmoroz: можешь показать скрин своего вьюса?

Аватар пользователя otmoroz otmoroz 19 августа 2010 в 15:21

мой вьювс уже умер вместе с сайтом))) у тебя не работает естественно из-за пути) нужно тип материала задать не в фильтрах, а в аргументах, если ничего не путаю!

Аватар пользователя psyh psyh 19 августа 2010 в 20:13

2 otmoroz А куда этот аргумент будет подставляться?
В общем я пока сделал навигацию по статьям руками. Создал во вьюсе разные пейджи для каждого термина таксономии, и привязал их к меню. Примитивно конечно, но пока у меня всего 6 родительских терминов в этом словаре + куча дочерних, но по ним уже не буду делать навигацию, пока не вижу в этом потребности.
А вот с вьюсом всеж хочется прояснить, уже второй раз с этой проблемой столкнулся и пока не решил.

Аватар пользователя otmoroz otmoroz 20 августа 2010 в 10:10

у меня стоит pathauto и пути к нодам складываются: /тип материала/нид.
Например, page/38
story/32
blog/1

аргументы это же урл Smile

а можно же по-моему и без пазавто настроить, выставить дефаулт аргумент.

Аватар пользователя psyh psyh 20 августа 2010 в 17:47

pathauto у меня тоже стоит. Но у нас все-таки разные случаи. Мне нужно темизировать страницу терминов, а там в пути никак не задать тип материала, можно только словать и термин... ладно жизнь на этом не кончается, буду существовать с этим дальше ))

Аватар пользователя psyh psyh 4 марта 2011 в 12:37

"fgvlasov" wrote:
получается без ID никак не привязаться =(

Почему? Это же всего-лишь синонимы, их ID никуда не делись.

Аватар пользователя fgvlasov fgvlasov 23 марта 2011 в 23:38

просто у всех типов нод отображение в системе одно: node/%
при выборе аргумента ставлю валидатор по Материалу, но это не помогает
Привязка page/% - работать не будет, это синоним.
Views_attach не помог - он ставит внутрь контента выборку, получается дублирование контента, что можно конечно убрать руками в шаблонах, это гемор.

всё таки разобрался - потребуются модули http://drupal.org/project/nodetypeviews и http://drupal.org/project/contemplate, в последнем оставляем в показе содержимого только описание, первое позволяет в представлениях подставить вместо содержимого для конкретного типа материала нужную выборку.

Аватар пользователя fgvlasov fgvlasov 25 марта 2011 в 11:04

убиться тапком... убрал pathauto , думал просто через node/% и аргументы получится. Применяется упрямо только к одному типу материала, другой брать не хочет, может есть какой нюанс в указании аргумента, галочка там какая?

Аватар пользователя otmoroz otmoroz 5 апреля 2011 в 13:11

аргументы - это id нод, пользователей, терминов, взятых из УРЛ (адресной строки.) У всех типов материалов адрес node/nID, поэтому должны выйти все.

Аватар пользователя fgvlasov fgvlasov 8 января 2012 в 15:51

решаю следующим способом: во первых ставлю модуль [module=contemplate] - позволяет темизировать вывод переменной $content, которая в свою очередь вставляется в шаблон с именем: node-type.tpl.php (то есть если у Вас тип содержимого object, то шаблон будет node-object.tpl.php)
Примерный вид такого шаблона:

<h1><?php print $title ?></h2>
<?php print $content ?>
<?php print $links; ?>

иногда можно в этом шаблоне дополнительно вытаскивать переменные полей cck таким образом:

<?php print $node->field_obj_address[0]['view'] ?>

если вам нужен список таких полей, то можете написать конструкцию:

<pre>
<?php print_r($node); ?>
</pre>

Этого достаточно для 6 друпала, в 7-ке немного сложнее, там нет модуля contemplate и обращение к шаблонам немного другое через двойные тире: node--object.tpl.php
Спасибо за внимание.

Аватар пользователя WebFamily WebFamily 14 марта 2012 в 1:56

"fgvlasov" wrote:
решаю следующим способом

А что с помощью Views так и не получилось сделать определенные вьюшки для определенных типов материала?
Долго уже мучаюсь с этим.