Есть поле Image (Drupal 7), в котором около 9 картинок. В дизайн страницы влезает только 5 (1 полоса). Хочется сделать так, чтобы они не занимали больше 1 полосы, а картинки, которые не влезли в эту полосу, смотреть по навигации через стрелочки. А по клику показывались в лайтбоксе. Уже все облазил по ключевым словам "карусель, слайдшоу, поле image, и т.д.". Везде только показано как сделать слайдшоу. Мне оно не нужно, нужна только "колбаса" из картинок с возможностью прокрутки. И такая "колбаса" в каждой ноде своя. Подскажите пожалуйста, кто знает. А то уже руки опускаются что-то делать.
РЕШЕНИЕ:
Пилю гайд о том как пользоваться jCarousel в связке с Views, чтобы получить карусель из контента полей ноды. (Как сделать красивую галерею)
1. Качаем и ставим jCarousel и Views.
2. Переходим в настройки модуля Views и жмем добавить новую вьюху.
3. Создаем вьюху как обычно, Display format выбираем "jCarousel" of "fields".
4. Сразу убираем pager, иначе ничего не будет выводится и в целом настраиваем вьюху так, как вам надо.
5. В Advanced -> Contextual filters добавляем "Содержимое: Nid" (номер ноды) и сохраняем.
6. Теперь в node.tpl.php или node-СИСТЕМНОЕимяТИПАвашегоСОДЕРЖИМОГО.tpl.php в вашей теме (как создавать или править темы - это уже другая история) с помощью функции views_embed_view() вы можете вывести вашу вьюху:
<?php print views_embed_view('СИСТЕМНОЕ ИМЯ ВАШЕЙ ВЬЮХИ', 'СИСТЕМНОЕ ИМЯ ДИСПЛЕЯ ВАШЕЙ ВЬЮХИ',
'АРГУМЕНТ(Ы) ДЛЯ КОНТЕКСТНОГО ФИЛЬТРА (если аргументов больше 1, то пишем их через запятую)'); ?>
<?php print views_embed_view('photo_gallery', 'photocarousel', $node->nid); ?>
или как подметил voviko и как я его понял
<?php print views_embed_view('photo_gallery', $display_id = 'photocarousel', $node->nid); ?>
7. Сами поля, если они выводятся вместе с вьюшкой, чтобы не дублировали контент на странице, скрываем. Например через CSS или просто добавив поля в скрытые в настройках отображения контента (содержимого).
8. Еще неплохо бы добавить фильтр по "ВАШ_ТИП_КОНТЕНТА: ИМЯ ПОЛЯ:delta (>= 0)". Чтобы вьюха не выводилась совсем, сли поле пустое.
p.s. Поправте меня пожалуйста, если я где-то неправ.
Вложение | Размер |
---|---|
howto.jpg | 251.38 КБ |
Комментарии
вставить в ноду вывод views jcarousel, аргумент номер ноды.
в node--type.tpl.php
<?php print views_embed_view('VIEW_NAME', 'block_ID', 'arg(1)');?>
Спасибо всем ответившим. Действительно сообщество ДРУпал ДРУжелюбное
На днях попробую, если получится, то выложу скриншоты - как делать.
Пишу в node.tpl.php:
<?php print views_embed_view('photo_gallery', 'page'); ?>
Выводится.
Пишу в node.tpl.php:
<?php print views_embed_view('photo_gallery', 'page', $node->nid); ?>
Не выводится.
Что делать? Как правильно пользоваться views_embed_view()? Нужно, чтобы в каждой ноде views принимал номер ноды в свой фильтр.
Тысяча чертей! Я был так близок! Просто думал, что при вводе функции аргумент будет подменяться. Ща буду пробовать.
block_ID - обратите внимание, не page а блок! иначе будет плохо с seo
Вынужден несогласится. jCarousel имеет дисплей не блок, а свой собственный, поэтому меняем машинное имя дисплея на отличное от "page" и пишем в функцию его. Как получилось у меня:
<?php print views_embed_view('photo_gallery', 'photocarousel', $node->nid); ?>
Хотя я и не исключаю своей крабовитости по причине отсутствия опыта и вы меня переубедите. Но тогда я вынужден просить развернутого ответа.
Пилю гайд о том как пользоваться jCarousel в связке с Views, чтобы получить карусель из контента полей ноды. (Как сделать красивую галерею)
1. Качаем и ставим jCarousel и Views.
2. Переходим в настройки модуля Views и жмем добавить новую вьюху.
3. Создаем вьюху как обычно, Display format выбираем "jCarousel" of "fields".
4. Сразу убираем pager, иначе ничего не будет выводится и в целом настраиваем вьюху так, как вам надо.
5. В Advanced -> Contextual filters добавляем "Содержимое: Nid" (номер ноды) и сохраняем.
6. Теперь в node.tpl.php или node-СИСТЕМНОЕимяТИПАвашегоСОДЕРЖИМОГО.tpl.php в вашей теме (как создавать или править темы - это уже другая история) с помощью функции views_embed_view() вы можете вывести вашу вьюху:
<?php print views_embed_view('СИСТЕМНОЕ ИМЯ ВАШЕЙ ВЬЮХИ', 'СИСТЕМНОЕ ИМЯ ДИСПЛЕЯ ВАШЕЙ ВЬЮХИ',
'АРГУМЕНТ(Ы) ДЛЯ КОНТЕКСТНОГО ФИЛЬТРА (если аргументов больше 1, то пишем их через запятую)'); ?>
<?php print views_embed_view('photo_gallery', 'photocarousel', $node->nid); ?>
или как подметил voviko и как я его понял
<?php print views_embed_view('photo_gallery', $display_id = 'photocarousel', $node->nid); ?>
7. Сами поля, если они выводятся вместе с вьюшкой, чтобы не дублировали контент на странице, скрываем. Например через CSS или просто добавив поля в скрытые в настройках отображения контента (содержимого).
8. Еще неплохо бы добавить фильтр по "ВАШ_ТИП_КОНТЕНТА: ИМЯ ПОЛЯ:delta (>= 0)". Чтобы вьюха не выводилась совсем, сли поле пустое.
p.s. Поправте меня пожалуйста, если я где-то неправ.
Как бы еще сделать, чтобы вьюха не выводилась совсем, если в поле нет определенного количества значений?
UPD. Сам же и решил. Фильтр по "ВАШ_ТИП_КОНТЕНТА: ИМЯ ПОЛЯ:delta (>= 0)". Что значит - у поля есть хотя бы 1 значение.
В принципе главный вопрос темы решен. Остались только маленькие вопросы и стайлинг.
<? if(isset(field_IMAGA[und][0][ла ла])) print VIEWS;?> примерно так.