Как использовать модуль Views с модулем Panels

Модуль Views очень мощный инструмент, используемый при создании сайтов на Drupal. При связке с модулем Panels он обретает дополнительную гибкость, которой так не хватало. Например, можно без проблем вывести один вьюз несколько раз на одной странице с разными настройками и контекстными фильтрами, при этом не приходится тратить время на то, чтобы лезть в код.

Для сегодняшнего урока я поставлю задачу:
Имеется два типа материала (новости и статьи), они связаны друг с другом с помощью модуля References. Необходимо при просмотре новости вывести в левой колонке термины, которые относятся к этой новости, а в правой колонке термины, которые относятся к статье, связанной с этой новостью.

Для начала работы нам необходимо включить модуль Views content panes, он входит в состав модуля Ctools.

После включения модуля, создаем новый вьюз (тип выводимого содержимого - термины таксономии) и добавляем дисплей Фрагмент панели:

Views - добавление нового дисплея
Views - добавление нового дисплея

Здесь у нас появилась новая секция с настройками Pane settings:

Views - pane settings
Views - pane settings

Здесь:

  • Административный заголовок - название вьюза, используется при добавлении вьюза на страницу;
  • Admin desc - описание вьюза, используется при добавлении вьюза на страницу;
  • Категория - категория, в которой будет находится вьюз;
  • Link to view - ссылка на вьюз;
  • Use Panel path - использовать путь панели;
  • Argument input - позволяет выбрать, как будет передаваться аргумент во вьюз;
  • Применить настройки - настройки, которые можно будет поменять в момент добавления вьюза на страницу.

Добавляем отношение Термин таксономии: Материалы с термином, делаем связь обязательной:

Views - добавление отношения
Views - добавление отношения

Добавляем контекстный фильтр Содержимое: Nid, в настройках "Когда значение фильтра НЕ доступно" выбираем "Скрыть представление":

Views - добавление контекстного фильтра
Views - добавление контекстного фильтра

Далее в секции с настройками изменяем настройку Argument input, для этого жмем напротив соответствующей надписи ссылку "Редактировать" и выбираем в селекте Input on pane config, сохраняем вьюз.

Теперь с помощью модуля Page Manager перекрываем страницу с путем "/node/%node", добавляем вариант с правилом выбора Материал: тип, выбираем 3х колоночный макет.

Первым делом нам необходимо добавить в контексты отношение "Материал from Материал (on Материал: Статья [field_news_artice])" (название отношения может меняться в зависимости от типа материала и названия филда). Для этого необходимо перейти по ссылке "Контексты", которая находится в вертикальном меню.

После этого переходим на страницу добавления содержимого, для этого кликаем по ссылке "Содержимое" в вертикальном меню. В центральную колонку добавляем нашу новость.

Затем добавляем вьюз в левую колонку. Кликаем по шестеренке, в открывшемся попапе ищем категорию Представления-Фрагменты (если при создании вьюза не меняли категорию, иначе ищем ту категорию, которую вписали) и в правой части попапа выбираем наш вьюз. В открывшемся попапе в поле Содержимое: Nid вводим %node:nid

Добавление вьюза в левую колонку
Добавление вьюза в левую колонку

Затем добавляем вьюз в правую колонку. Все действия такие же, только теперь в поле Содержимое: Nid вводим %node_2:nid

Добавление вьюза в правую колонку
Добавление вьюза в правую колонку

Поставленная задача выполнена!

P.S. Я намеренно не стал показывать в уроке все настройки, чтобы у вас была возможность попробовать разобраться с ними самим.

Комментарии (10)

Аватар пользователя kreaton
kreaton

Спасибо за статью! Как раз пригодилось.

Аватар пользователя OLechka_Semenova
OLechka_Semenova

Здравствуйте.

Я только учусь.
 Может это вопрос глупый, но нигде не нашла ответа.
 Использую Drupal 7 на локалхосте.
 Создала таблицу во Views с фильтрами - выпадающие списки (по урокам на сайте Podrupalim.com)

Потом решила вставить эту таблицу в Панель. И она встала! Выбрала цвет, украсила ))).

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

Думаю, что проблема может быть в путях, пыталась методом подбора ставить подстановки в page manager. Пыталась node/%node в Панелях.
 Но так ничего и не получилось.

Просмотрела несколько сайтов: xandeadx.ru; drupaler.by; nodeone.se и еще несколько. Но по этому вопросу ничего не нашла или не поняла.

Вопросы:
 1.Каким способом для меня лучше выводить таблицу с фильтрами созданную во Views, чтобы она всегда отображалась в выбранной панели.
 2.Можно ли изменить название кнопки "Применить" на "Поиск"

Заранее огромное спасибо.

Аватар пользователя Benya
Benya

1. Чтобы раскрытые фильтры работали, в настройках дисплея необходимо отметить галкой опцию Use panel path.
2. Да можно, для этого в настройках дисплея в группе Exposed form (находится под группой No results behavior) измените название кнопки в поле Submit button text

Аватар пользователя Владимир
Владимир

Добрый день, спасибо за статью.
Подскажите пож-та, есть ли возможность отображать только часть статьи?
Например незарегистрированным пользователям отображать только половину статьи. Если же пользователь зарегистрировался или имеет права, то отображать ему всю статью.
Я использую Content Access, но этот модуль отображает или скрывает только всю статью полностью

Аватар пользователя Benya
Benya

Создайте 2 разных вьюза, и в панели показывайте или скрывайте нужные с помощью правила выбора.

Аватар пользователя Владимир
Владимир

Спасибо за ответ, а есть статейка как создавать вьюзы и всё остальное?

Аватар пользователя Benya
Benya

У меня нет, но в сети материала полно

Аватар пользователя uxenus
uxenus

Привет!
У меня вопрос по панелям ... когда дохожу до шага определения регионов ... то в списке раздела "Добавить содержимое" нет Представлений ... хотя они созданы ...
Не подскажите в чём дело?

Спасибо!

Аватар пользователя Benya
Benya

Должна быть категория Views, а если включен модуль Views content panes и создано представление с дисплеем View pane, то еще должна появиться категория view panes. Смотрите внимательнее

Аватар пользователя Артем
Артем

Вот как добавить кнопку добавить в корзину в Panels