Темизация views (представлений) в Drupal 7
Как темизировать страницы, поля, блоки и многое другое мы разбирали в прошлых статьях. Теперь пришло время разобрать как мы можем воздействовать на представления.
Создание представления
Для начала работы над представлениями нам необходим его создать, что бы было что темезировать. Для этого переходим раздел структура, подраздел представления. И в открывшимся окне нажимаем на ссылку «Добавить новое представление».
Дальнейшею настройку мы рассматривали в прошлых статьях, отмечу только то, что для того, что бы мы могли дальше темизировать наше представление нам необходимо выбрать в формате отображения «Таблица», поскольку остальные форматы отдадут нам в tpl.php шаблоны сразу готовый html код, а нам для работы нужны более сырые данные.
Добавляем все необходимые поля по своему усмотрению, в своём случае я добавлю только изображение превью, тайтл и часть текста (body). Настройки полей подстраиваем под специфику своего проекта.
Выбор шаблона для темизации
Перед началом темизации views на drupal 7 необходимо сначала определиться с шаблоном, который нам понадобится.
Для этого переходим в расширенные настройки представления, опускаемся вниз в группу настроек под названием “Other” и кликаем по ссылке «Информация», рядом с «Тема оформления».
После нажатия на ссылку, перед нами откроется окно со всеми шаблонами относящиеся к этому представлению.
Сейчас нас интересуют шаблоны в разделе «Стиль вывода».
Шаблоны
Значимость шаблонов изменяется с лева на право, по мере увеличения. То есть если будет присутствовать в теме шаблон, который стоит правее от других, он перекроет все лево стоящие шаблоны
Используемые шаблоны:
views-view-table.tpl.php – шаблон содержащит стандартный код и используется по умолчанию;
views-view-table—[машинное_имя_представления].tpl.php (views-view-table—temizaciya.tpl.php) – затронет все дисплеи внутри конкретного представления, у который стоит формат отображения «Таблица»;
views-view-table—[тип_представления].tpl.php (views-view-table—block.tpl.php)– затронет все представления созданные в виде блока и с форматом отображения «Таблица»;
views-view-table—[машинное_имя_представления] —[тип_представления].tpl.php (views-view-table—temizaciya—block.tpl.php) – затронет дисплеи созданные в виде блока внутри конкретного представления;
views-view-table—[машинное_имя_отображения].tpl.php (views-view-table—proba.tpl.php) – задействует отображение с машинным именем «proba»;
views-view-table—[машинное_имя_представления]—[машинное_имя_отображения].tpl.php (views-view-table—temizaciya—proba.tpl.php) – затронет отображение с машинным именем «proba» созданным в представлении «temizaciya»;
Следовательно, в зависимости от того, какой шаблон вы выбрали, можно воздействовать как на конкретное отображение внутри представления так и на все отображения одного типа.
Например, если вам необходимо темизировать все отображения внутри одного представления вам не понадобиться для каждого настраивать свой шаблон, будет достаточно выбрать шаблон типа
Создание и подключение шаблона
Чтобы подключить шаблон нам стоит создать файл внутри нашей темы с расширением tpl.php, а имя файла выбираем из списка шаблонов в зависимости от необходимой для нашего случая меры воздействия. В своём случае я буду темизировать конкретное отображение, по этому я задействую шаблон «views-view-table—temizaciya—proba.tpl.php»
Теперь возвращаемся в представление и кликаем по ссылке «Стиль вывода»
Перед нами откроется окно со стандартным кодом шаблона.
Копируем его и вставляем в новосозданный файл.
После того, как мы создали шаблон и вставили в него стандартный код, нам стоит сообщить системе, о его существовании. Для этого мы возвращаемся в раздел с шаблонами, пролистываем вниз и нажимаем на кнопку «Пересканировать файлы шаблонов»
Теперь в списке будет подсвечено название шаблона, который мы создали. Это означает, что он подключен.
На этом настройки внутри представления окончены, по этому можно смело сохранять его и переходить к дальнейшей темизации views.
На данном этапе наше представление выглядит следующим образом:
Начнем его темизацию.
Перед началом работы с темизацией представлений, убедитесь что на вашем проекте установлен Devel, а на страницу выводятся системные сообщения.
Внутри файла сейчас содержится стандартный код таблицы, от которого мы смело можем избавляться. В нашем случае нам понадобится цикл foreach, а внутри него впишем dpm($value). Dpm нам поможет узнать, что передаёт представление на страницу.
Создаём удобную для нас конструкцию, а поля выводим при помощи функции print, что в них вставлять узнаем из dpm.
Если для Вас сразу не понятен принцип работы с dpm советую ознакомиться со статьей посвященной темизации страницы материала, в ней уже подробно разбирался процесс работы с dpm.
В конечном итоге мой код принял вид:
Убираем dpm из вывода, ведь больше нам не нужны не какие поля и смотрим, как оно выглядит на экране.
Все элементы выводятся в нужном нам порядке. Дальнейшая темизация лежит не посредственно за цссом.
Пару строк кода и наше отображение приняло «человеческий» вид.
Подводя итоги
Представления — один из наиболее часто используемых модулей на сайтах написанных при помощи drupal, а возможность более гибко управлять постановкой полей внутри views позволяет подогнать их под любое дизайнерское решение.
Понимание, какой шаблон за что отвечает, поможет с помощью одного шаблона темезировать сразу несколько однотипных отображений и сэкономить Ваше время.
Большинство дополнительных модулей в качестве отображения своего функционала также используют представления, а знание как можно воздействовать на представление поможет более гибко подстраивать их под свой проект.
Оценок: 15 (средняя 4.9 из 5)
Введение в модуль views в drupal 7
Одним из важнейших модулей в Drupal можно смело назвать модуль «views». Модуль «views» — помогает выводить нам весь контент сайта именно в той форме, в какой нам необходимо. По сути это визуальный редактор построения «SQL» запросов. Благодаря которому в несколько кликов мыши мы можем вывести контента сайта совершенно по другому. Но, что бы это лучше понять продемонстрирую это всё на конкретном примере в drupla 7:
Задача: нам нужно вывести тизер конкретного типа содержимого
Решение: Надеюсь, что вы уже скачали и установили модуль «views», как установить модуль можно почитать вот здесь. Для работы «views» необходим так же модуль «ctools» — поэтому его тоже нужно скачать и установить. С этим думаю проблем у вас не должно возникнуть. А также для наглядности картины, вам нужно создать контент на сайте .Включаем модули в панели «Модули»
Ставим галочки напротив «views» и «ctools» — сохраняем. Теперь в пункте «Структура» у вас должен появиться дополнительный пункт – «представления» (views).
Переходим в него, и перед нами открывается панель представлений, те которые имеются в модуле уже по умолчанию.
Нам они не интересны, поэтому кликаем по пункту «Добавить новое представление» и приступаем к созданию. Перед нами открылась страница, где нам нужно ввести первоначальные параметры «представления» или как говорят в сообществе drupal «вьюха». Замечу, что интерфейс модуля «views» для Drupal 6 и Drupal 7 кардинально отличаются.
Первое, что нам необходимо это дать название представлению (желательно на английском), но если хотите на русском, то не забудьте отредактировать машинное имя представления, так как по умолчанию Drupal заносит туда заголовок представления.
В пункте «показать» нужно выбрать, что мы хотим отобразить — в данном случае – это содержимое.
В пункте «типа» — выбираем для какого типа нам нужно отобразить содержимое, у меня это «basic page».
Ставим галочку создать страницу и прописываем в пункте «Заголовок страницы» будущее название нашей страницы, а в пункте «Путь» -url адрес нашей будущей страницы. Для решения нашей задачи – этого будет достаточно. Нажимаем сохранить и появится подтверждение, что представление сохранено.
Теперь результат нашей работы можно посмотреть по тому адресу, который мы указывали при создании вьюхи, а именно
Название_сайта/-newviews
Это самый лёгкий вариант создания представлений по средством модуля «views». Далее в уроках я рассмотрю примеры как строить сложные представления, методы фильтрации, связи , аргументы и так далее. По этому модулю можно создавать отдельный сайт с его полным и подробным описанием.
Drupal: Хуки Views | xandeadx.ru
Краткое описание хуков Views, вызывающихся в процессе генерации представления:
hook_views_pre_view(&$view, &$display_id, &$args)
Позволяет изменять представление на самой ранней стадии выполнения, до инициализации дисплеев, генерации и выполнения sql запроса.
function hook_views_pre_view(&$view, &$display_id, &$args) { // Change the display if the acting user has 'administer site configuration' // permission, to display something radically different. // (Note that this is not necessarily the best way to solve that task. Feel // free to contribute another example!) if ($view->name == 'my_special_view' && user_access('administer site configuration') && $display_id == 'public_display') { $display_id = 'private_display'; } }
hook_views_pre_build(&$view)
Хук выполняется перед сборкой представления, в самом начале views::build()
. Дисплеи на этот момент уже инициализированы и выполнена их фаза views_plugin_display::pre_execute()
.
function hook_views_pre_build(&$view) { // Because of some unexplicable business logic, we should remove all // attachments from all views on Mondays. // (This alter could be done later in the execution process as well.) if (date('D') == 'Mon') { unset($view->attachment_before); unset($view->attachment_after); } }
hook_views_post_build(&$view)
Выполняется после сборки представления, в самом конце views::build()
. SQL запрос на этот момент уже построен, но ещё не передан в db_rewrite_sql()
.
function hook_views_post_build(&$view) { // If the exposed field 'type' is set, hide the column containing the content // type. (Note that this is a solution for a particular view, and makes // assumptions about both exposed filter settings and the fields in the view. // Also note that this alter could be done at any point before the view being // rendered.) if ($view->name == 'my_view' && isset($view->exposed_raw_input['type']) && $view->exposed_raw_input['type'] != 'All') { // 'Type' should be interpreted as content type. if (isset($view->field['type'])) { $view->field['type']->options['exclude'] = TRUE; } } }
hook_views_pre_execute(&$view)
Вызывается перед выполнением запроса, в самом начале view::execute()
. SQL запрос на этот момент уже построен, но ещё не передан в db_rewrite_sql()
.
function hook_views_pre_execute(&$view) { // Whenever a view queries more than two tables, show a message that notifies // view administrators that the query might be heavy. // (This action could be performed later in the execution process, but not // earlier.) if (count($view->query->tables) > 2 && user_access('administer views')) { drupal_set_message(t('The view %view may be heavy to execute.', array('%view' => $view->name)), 'warning'); } }
hook_views_query_alter(&$view, &$query)
Альтер-хук. Вызывается перед выполнением SQL запроса. Предназначен для изменения запросов.
function hook_views_query_alter(&$view, &$query) { // (Example assuming a view with an exposed filter on node title.) // If the input for the title filter is a positive integer, filter against // node ID instead of node title. if ($view->name == 'my_view' && is_numeric($view->exposed_raw_input['title']) && $view->exposed_raw_input['title'] > 0) { // Traverse through the 'where' part of the query. foreach ($query->where as &$condition_group) { foreach ($condition_group['conditions'] as &$condition) { // If this is the part of the query filtering on title, chang the // condition to filter on node ID. if ($condition['field'] == 'node.title') { $condition = array( 'field' => 'node.nid', 'value' => $view->exposed_raw_input['title'], 'operator' => '=', ); } } } } }
hook_views_post_execute(&$view)
Вызывается после выполнения запроса, в самом конце view::execute()
. Фаза pre_render()
для хендлеров ещё не выполнена.
function hook_views_post_execute(&$view) { // If there are more than 100 results, show a message that encourages the user // to change the filter settings. // (This action could be performed later in the execution process, but not // earlier.) if ($view->total_rows > 100) { drupal_set_message(t('You have more than 100 hits. Use the filter settings to narrow down your list.')); } }
hook_views_pre_render(&$view)
Вызывается перед рендерингом представления. pre_render()
фаза у хендлеров уже выполнена, поэтому все данные должны быть доступны.
function hook_views_pre_render(&$view) { // Scramble the order of the rows shown on this result page. // Note that this could be done earlier, but not later in the view execution // process. shuffle($view->result); }
hook_views_post_render(&$view, &$output, &$cache)
Вызывается после рендеринга данных.
function hook_views_post_render(&$view, &$output, &$cache) { // When using full pager, disable any time-based caching if there are less // then 10 results. if ($view->query->pager instanceof views_plugin_pager_full && $cache->options['type'] == 'time' && count($view->result) < 10) { $cache['options']['results_lifespan'] = 0; $cache['options']['output_lifespan'] = 0; } }
Полный список хуков.
Preprocess функции для представлений Views.
Убираем дубли во Views Drupal 7
На днях, совершенно случайно обнаружил достаточно серьезную в плане SEO оптимизации проблему связанную со страницами, которые выводятся с помощью Views в Drupal 7.
Внимание! Статья и термины рассчитаны для друпаловедов, но уверен что не помешает и будет полезна к сведению всем остальным веб мастерам и SEO оптимизаторам.
Проблемы SEO оптимизации Views
На сайте с которым я работал была страница созданная с помощью вьюхи. Вьюха выводила список определенного типа материала. Адрес страницы вьюхи имеет вид «sitename.ru/post» и совпадает с частью иерархии страницы материала. То есть: конечный материал на который можно попасть со страницы вьюхи имеет следующий Url: sitename/post/pagename. Проблемы которые могут возникнуть при такой иерархии урлов:
- На странице Views дописав к концу URL любой произвольный текст (например в разделе «инструментарий» этого блога по адресу «seonomad.net/seotools/dhhd» обнаружилось, что никакой 404 страницы нету и ответ сервера при этом отдает 200 ОК. Это может наплодить кучу ненужных страниц, которые по сути будут дублями основной (seonomad.net/seotools), что как сами понимаете не есть хорошо в плане SEO оптимизации сайта.
- Удалив любой материал который выводит эта вьюха (например «seonomad.net/seotools/megaindex«) вместо 404 страницы получалась страница вьюхи с ответом «200 ОК». То есть, по адресу на котором находилась удаленная страница (seonomad.net/seotools/megaindex) будет выводиться страница списка материалов нашей вьюхи с ответом «200 ОК», вместо 404 страницы с ответом «404 not found». Это серьезная проблема в плане SEO, так как все удаленные страницы по сути не удаляются, а становятся дублирующими ссылками на свою вьюху родителя.
Что еще интересно. Первая проблема актуальна по умолчанию для Drupal + Views, а вот вторая возникает лишь в случае, когда адрес страницы списка материалов выводимых во Views, совпадает с частью иерархии адреса страницы типа материала, который наша вьюха выводит. (как в примере seonomad.net/seotools/megaindex где /seotools это адрес страницы выводимую через Views)
Решение проблемы
Решением обеих вышеописанных проблем дублей во Views оказалось элементарным. Для того чтобы несуществующие страницы отдавали 404 ответ достаточно установить модуль Views 404.
Честно, для меня это было откровением. Более четырех лет работаю с CMS Drupal, а такой грубой ошибки даже не замечал. Если у вас есть проекты на CMS Drupal — проверьте на всякий наличие вышеуказанных ошибок, а также советую воспользоваться шпаргалкой по самым необходимым модулям необходимым для SEO оптимизации CMS Drupal в этой статье.
Drupal Views Infinite Scroll — подгрузка материалов при прокрутке страницы
Все больше и больше сайтов стали использовать динамическую подгрузку контента при скроллинге страницы. Drupal не является исключением, на нем с легкостью можно реализовать данную функцию. Это будет полезно когда у вас много контента, но показывать посетителям сайта нужно только несколько-десятков последних статей либо нужно как-то оптимизировать работу сервера и не грузить всю информацию сразу.
Для того что бы добавить такую возможно на сайт нам понадобятся модули:
Модуль Views Infinite Scroll очень прост в настройке. Он устанавливается как плагин для Views и появляется в списке постраничных навигаторов представления.
Для того чтобы использовать модуль необходимо его активировать, после этого скачать js-библиотеку jquery.autopager и положить в папку модуля views_infinite_scroll/js либо воспользоваться drush-командой drush dl-autopager.
После этого можете настраивать свое представление. Абсолютно неважно какой тип контента оно выводит, ноды, таксономию, пользователей, pager можно применить к абсолютно всем сущностям, соответственно и Infinite Scroll тоже.
После включения модуля и загрузки jquery.autopager в настройках постраничного навигатора появится новый пункт Infinite scroll, после выбора которого мы увидим обычную форму настройки навигатора. В поле Элементов на страницу(Items per page) надо указать по сколько материалов представление будет подгружать за один раз.
В результате мы получим динамическую подгрузку содержимого при прокрутке страницы. Пользователи с отключенным JavaScript в браузере увидят обычный mini-pager.
С одной стороны подгрузка материалов при прокрутке странице очень красивая и полезная функция, но с другой стороны что бы пользователю найти старый материал придется очень-очень много скроллить =) Если уж и использовать динамически загружаемый контент, то стоит позаботится о том, что бы на сайте был архив либо что-то, что позволит пользователю найти нужную информацию быстрее.
Используемые модули и библиотеки:
Как использовать модуль Drupal 7 Views (Учебник для начинающих)
Drupal 7 — невероятно гибкая система управления контентом (CMS) с обширной библиотекой модулей, расширяющих ее функциональные возможности. Одним из таких модулей является модуль «Просмотры».
Views имели наибольшее количество загрузок в Drupal 7, и это побудило разработчиков Drupal добавить его к основной функциональности Drupal 8.
Давайте посмотрим, что делает «Views» таким замечательным и как использовать его в Drupal 7.
Один из важнейших факторов успеха веб-сайта — это то, как он отображается для пользователя. Drupal 7 по умолчанию включает некоторые полезные типы контента, такие как статьи и базовые страницы — каждый со своим собственным типом макета отображения по умолчанию. Но что, если вы хотите добавить больше типов макетов отображения, таких как «списки»? Здесь в игру вступает модуль просмотров Drupal 7. Он имеет несколько конфигураций и может быть интегрирован с более чем 300 модулями Drupal 7.
Возможности модуля просмотров практически безграничны.
Вот несколько возможных сценариев, в которых может быть полезен модуль «Просмотры»:
- Вам нравится вид главной страницы по умолчанию, но вы обнаружите, что хотите отсортировать его по-другому.
- Вам нравится представление таксономии / терминов по умолчанию, но вы обнаружите, что хотите отсортировать его по-другому; например, по алфавиту.
- Вы используете «/ tracker», но хотите ограничить его публикациями определенного типа.
- Вам нравится идея модуля «статья», но он не отображает статьи так, как вам нравится.
- Вам нужен способ отображения блока с пятью последними сообщениями определенного типа.
- Вы хотите предоставлять «непрочитанные сообщения форума».
- Вам нужен ежемесячный архив, аналогичный типичным архивам «Movable Type / WordPress», которые отображают ссылку на «в форме« Месяц, »ГГГГ (X)», где X — количество сообщений в этом месяце, и отображает их в блоке. Ссылки ведут к простому списку сообщений за этот месяц.
Не думайте о модуле «Drupal 7 views» только как о варианте отображения или конструкторе макетов.Да, он позволяет настраивать типы отображения, но это намного больше. Он даже может фильтровать контент из базы данных, что позволяет пользователю форматировать и отображать в нужном формате.
Чтобы продемонстрировать силу «просмотров», я сделаю простой индекс блога.
Установить и включить модуль Drupal 7 Views
Во-первых, вам необходимо загрузить, установить и включить модуль «Просмотры», если вы еще этого не сделали.
Тип контента «Просмотры»
Затем перейдите к структуре .Здесь вы должны увидеть тип контента «Просмотры». Нажмите на нее, чтобы перейти на главную страницу конфигурации «Просмотры».
Добавить новый вид
Оказавшись здесь, нажмите ссылку «добавить новое представление» вверху.
Назовите свое представление, затем выберите тип содержимого «Статья.
Затем в разделе «Создать страницу» измените форматирование, если хотите, и установите флажок рядом с «Создать ссылку меню», чтобы связать «Просмотр» в главном меню.
По завершении нажмите кнопку «сохранить и выйти» внизу.
Проверьте новый взгляд
Теперь перейдите в главное меню и щелкните ссылку для созданного представления. Вы должны увидеть страницу в соответствии с параметрами, которые вы установили для представления.
Заключение
Как вы могли догадаться только из простого примера, показанного в этом посте, «Drupal 7 Views» — невероятно мощный модуль, и его популярность является свидетельством этого факта. Поначалу может показаться, что «Просмотры» сбивают с толку, но лучший способ познакомиться с ним — это поэкспериментировать и найти, что разные его настройки могут сделать для вас.Надеюсь, этот пост оказался для вас полезным.
Дайте мне знать в комментариях ниже, если у вас есть какие-либо вопросы.
С легкостью создавайте интерактивные веб-сайты Drupal в облаке.
Разместите свой сайт на оптимизированных серверах хостинга Drupal.
Хамза Зия
Хамза — менеджер сообщества Drupal в Cloudways — управляемой платформе хостинга Drupal.Он любит писать о Drupal и связанных темах. В свободное время его можно увидеть одержимым футболом, автомобилями, Android и играми.
×Получите наш информационный бюллетень
Будьте первым, кто получит последние обновления и руководства.
Спасибо за подписку на нас!
Вам нравится то, что вы читаете?
Спасибо за отзыв!
Как использовать представления ссылок на сущности в Drupal 7
Entity Reference Views — один из способов облегчить жизнь создателям контента Drupal.
Обычно, когда люди создают контент на вашем сайте, каждое поле состоит из одного поля с одной точкой данных. Например, в списке людей вы можете получить только имя человека.
Entity Reference Views позволяет предоставить гораздо больше информации. Например, вы можете добавить фотографии и личные данные в свой список людей.
Представления ссылок на сущности в Drupal 7
В этом примере у меня есть тип контента под названием «Презентации» и другой тип контента под названием «Ораторы».Каждый раз, когда я добавляю презентацию, я хочу выбрать выступающих из списка.
- Установите и включите представления и ссылку на сущность.
- Перейдите в раздел «Структура»> «Представления»> «Добавить новое представление».
- Создайте представление содержимого, из которого вы хотите, чтобы редакторы содержимого могли выбирать. В этом примере я собираюсь составить список «говорящих»:
- Вверху страницы нажмите «Добавить», затем «Ссылка на объект»:
- Щелкните «Настройки» рядом с «Список ссылок на объекты».
- Поля поиска : выберите поле, по которому пользователи будут искать.
- Щелкните «Применить (этот экран)».
- Проверьте предварительный просмотр, чтобы убедиться, что ваше представление работает …
Шаг 2. Добавить поле с представлением ссылки на сущность
- Перейдите в раздел «Структура»> «Типы контента».
- Добавьте поле «Ссылка на объект».
- Тип цели : выберите ссылку на узлы, пользователей, файлы или что-то еще, что вы хотите отобразить.
- Режим : Выберите «Просмотр: Фильтр по представлению ссылки на объект».
- Представление, используемое для выбора объектов : выберите созданный вами вид.
- Нажать «Сохранить настройки поля».
- Нажмите «Добавить контент», и при вводе данных для вашего поля будет использоваться созданное вами представление:
Виджет представлений ссылки на сущность
Этот модуль можно расширить с помощью виджета Entity Reference View Widget.Это помещает ваш вид во всплывающее окно, чтобы упростить выбор элементов.
Здесь есть руководство, а в этом видео есть руководство:
Представления ссылок на сущности в Drupal 8
И представления, и ссылка на сущность теперь являются частью ядра Drupal 8. Чтобы использовать Entity Reference Views в Drupal 8, процесс выглядит следующим образом:
- Создайте представление, как мы показали выше.
- Перейдите в раздел «Структура»> «Типы содержимого»> «Добавить поле».
Щелкните настройки и в разделе «Тип ссылки» вы можете выбрать «Представления: Фильтр по представлению ссылки на объект».
Об авторе
Стив — основатель OSTraining. Родом из Великобритании, сейчас он живет в Сарасоте в США. Работа Стива находится на грани обучения и веб-разработки.
Введение в Views 3 в Drupal 7
Введение
Views — один из самых популярных модулей Drupal с более чем 5 миллионами загрузок и более 700 тысячами сайтов, которые сообщают об его использовании. Он настолько популярен, что Drupal 8 будет поставляться с Views в ядре как часть захватывающей и приветствуемой инициативы процесса выпуска Drupal 8.
Это вводное руководство в мир представлений и то, как вы можете использовать этот замечательный модуль для создания списков контента.Есть несколько более мелких тем, которые я рассмотрю как часть этого урока. Сначала мы увидим, как начать работу и создать представление. Затем мы увидим, какие списки и форматы контента доступны нам из коробки.
После того, как мы выберем, как будет выглядеть представление, мы немного рассмотрим фильтрацию и сортировку. Эти параметры используются, чтобы убедиться, что мы отображаем только правильный контент и в том порядке, в котором мы хотим, чтобы он отображался. Звучит захватывающе?
Давайте нырнем.
Начало работы
Установка Views аналогична установке любого другого модуля.Я не собираюсь описывать процесс установки модулей Drupal, а скорее укажу вам на подробное руководство на Drupal.org.
Если вы знаете, как использовать Drush (чему я всем сердцем рекомендую), вы можете выполнить две простые команды, и все готово:
drush dl просмотров
drush en views views_ui -y
Это загрузит и включит все необходимые модули (включая CTools, который является зависимостью).
Теперь, когда у нас установлены представления, мы можем перейти к admin / structure / views
, чтобы получить обзор всех существующих представлений на сайте.Вы заметите несколько неработающих, вышедших из коробки. Мы не будем вдаваться в подробности, но приятно знать, что они есть. Первая страница и Термин таксономии особенно интересен, поскольку они имитируют и заменяют поведение Drupal по умолчанию.
В дальнейшем я хочу создать представление и поэкспериментировать, чтобы проиллюстрировать, как вы можете начать его использовать. Итак, продолжайте и щелкните ссылку Добавить новый вид вверху, чтобы перейти к форме создания представления.
Здесь мы устанавливаем имя представления и внутри первого набора полей мы уже можем фильтровать, какую информацию будет отображать представление.
Мы выберем для отображения Контент
(узлы), но вы также заметите и другие объекты (термины, пользователи и т. Д.). Обратите внимание, что выбор, сделанный вами в этом поле выбора, не может быть изменен позже. Поскольку мы выбрали Content
, у нас также есть возможность выбрать, какой тип контента. А пока давайте перейдем к статье , но знайте, что вы можете изменить это позже при редактировании представления.
Кроме того, поскольку мы выбрали тип контента Article
, который имеет поле Tags
, которое ссылается на термины таксономии в словаре с тем же именем, мы также можем выполнить немедленную фильтрацию на основе этого.Однако мы не знаем, что это возможно (как сейчас, так и позже при редактировании представления). И, наконец, мы можем отсортировать список по нескольким из уже доступных критериев, но мы пока этого делать не будем.
Отображение страницы
Ниже только что отредактированного набора полей мы видим еще 2 набора полей, которые дают нам возможность создать страницу и блок. Это ярлыки для создания дисплеев для нашего представления.
Any View может содержать несколько дисплеев ,
разных типов (страница, блок, лента и т. Д.).Некоторые из них доступны «из коробки», а некоторые предоставляются другими дополнительными модулями. Таким образом, вы можете создать единое представление, которое отображает один и тот же контент разными способами, используя разные форматы, фильтры и т. Д.
В этой статье мы будем придерживаться отображения Page и создадим его на следующем шаге (чтобы вы могли видеть весь процесс). Так что оставьте эти 2 флажка снятыми и нажмите Продолжить и отредактируйте .
Вы попадете на главную страницу редактирования представления, где я рекомендую нажать кнопку Сохранить , поскольку представление еще не сохранено, прежде чем вы это сделаете.
На этой странице вы заметите вверху панель Displays
, которая содержит строку под названием Master
. Мы хотим создать страницу с путем, на котором мы сможем увидеть наш список. Итак, нажмите Добавить
, выберите Page
и укажите новое отображаемое имя. Затем вы также можете выбрать заголовок страницы, щелкнув Нет
под набором полей Заголовок .
Здесь следует отметить одну важную вещь, которая хорошо послужит вам в будущем. Когда вы вносите изменения, аналогичные тем, которые вы только что внесли, у вас будет выбор: применить их только к этому дисплею или ко всем остальным (см. Изображение ниже).Вы должны быть осторожны, потому что по умолчанию выбрано Все отображает
. Об этом легко забыть, и это может вызвать проблемы, если у вас несколько дисплеев. так что имейте это в виду и убедитесь, что вы вносите изменения в дисплеи, которые хотите, чтобы внес изменения.
Перед тем, как перейти к остальным настройкам, вам необходимо указать путь для страницы просмотра. Представления должны будут зарегистрировать его в Drupal, и вы не сможете сохранить представление без него. Итак, в разделе Параметры страницы щелкните Путь не установлен
, чтобы указать его.Затем вы также можете поместить его в меню и указать правило доступа для страницы.
Формат
В наборе полей Format у нас есть некоторые важные параметры, которые имеют дело с тем, как отображается представление, а — какие именно отображаются из содержимого. По умолчанию у вас есть несколько форматов, которые вы можете выбрать (и некоторые настройки для каждого), но пока мы выберем формат по умолчанию: неформатированный список. Это самый простой вариант, но я рекомендую вам поэкспериментировать с другими.
Но теперь, когда мы выбрали формат, давайте посмотрим, что на самом деле будет отформатировано. По умолчанию это поля. Это означает, что вы выбираете несколько полей Drupal (либо свойства сущности, либо поля, объявленные через пользовательский интерфейс поля), и они отображаются для каждой статьи. Это то, что мы выберем в будущем, но я хочу рассказать вам также о другом варианте, который поставляется с Views: content
.
Каждый тип контента в Drupal 7 имеет несколько режимов просмотра (полный, тизер, RSS и т. Д.).Используя модуль Display Suite, вы можете определить еще больше. И для каждого режима просмотра вы можете указать свой способ отображения полей. Например, у вас будет другой стиль изображения в тизере, чем в полноэкранном режиме.
Это то, на что ссылается содержимое , альтернатива
полям
в представлениях. Вы можете выбрать узел для отображения в определенном режиме просмотра. И это может быть мощным. Но давайте продолжим с использованием полей, потому что это позволяет нам оставаться в сфере представлений, когда дело доходит до подготовки вывода каждой отдельной строки представления.
Поля
Теперь, когда мы решили использовать вариант с полями, вы уже заметили в области предварительного просмотра внизу страницы список заголовков статей. Это потому, что по умолчанию просмотры включают поле заголовка, поскольку требуется хотя бы одно поле. Чтобы добавить другие, нажмите кнопку Добавить
под Поля
. Вам будет предложено наложение, в котором вы можете искать и выбирать поля для добавления.
Для разных типов полей доступны разные варианты, и, к сожалению, мы не можем здесь перечислить все.Но давайте поставим небольшую цель и попытаемся ее достичь: тизеры узла статьи, показывающие заголовок, краткое содержание и изображение.
Итак, давайте посмотрим на поля Body и Image по умолчанию, которые идут с типом контента Article. Они отображаются как Content: Body
и Content: Image
, поэтому установите флажок рядом с ними и примените.
Вам нужно будет настроить оба этих поля по одному. Для Body мы можем снять флажок рядом с Create a label
и под Formatter выбрать Summary или обрезанный
вместе с произвольной длиной обрезки, если хотите.
Следующие 3 свернутых набора полей являются достаточно продвинутыми и доступны также для большинства других типов полей. Мы не можем охватить их в этом руководстве, но вот краткое изложение. В настройках стиля
вы можете управлять HTML-кодом, который отображается для этого отдельного поля в каждой строке. В разделе Поведение при отсутствии результатов
вы можете указать значение, которое будет отображаться в случае, если в самом поле нет значения. А в разделе Rewrite results
у вас есть много параметров, которые связаны с изменением содержимого отображаемого поля.Здесь вы можете объединять поля, создавать ссылки, удалять теги и другие полезные действия.
После завершения Body вам нужно будет повторить процесс для поля изображения. Я предлагаю снова удалить ярлык, и, поскольку мы хотим, чтобы изображение было тизером, давайте выберем стиль эскиза изображения. Мы также можем связать изображение с контентом. После сохранения этих настроек, проверьте предварительный просмотр ниже. Вы должны увидеть заголовок, текст и изображение для каждого узла статьи. Если вы хотите изменить порядок полей, щелкните маленькую стрелку рядом с кнопкой Добавить
, которую вы только что нажали, и выберите Изменить порядок
.Затем вы можете перетащить их на место.
Хотя это еще далеко не все, и для любого реального веб-сайта нужно много отредактировать и стилизовать, скажем, мы довольны результатом и можем двигаться дальше.
Фильтры
Под полями
вы можете увидеть раздел Критерии фильтра
, который уже содержит два фильтра (вы можете щелкнуть по ним и просмотреть их параметры). Первый — это фильтр по свойству статуса узла, он показывает только опубликованный контент.Второй фильтрует по свойству типа и показывает только узлы типа , артикул
. Здесь мы можем внести изменения, если захотим изменить или включить другие типы контента.
Фильтры также могут быть доступны конечным пользователям, установив флажок Показать этот фильтр посетителям, чтобы они могли изменить его
. Так, например, если мы хотим, чтобы конечные пользователи выбирали, какие типы контента должны быть включены, мы могли бы отредактировать фильтр и включить эту функцию.
Под набором полей Advanced
в правой части страницы вы также можете добавить контекстные фильтры.Они очень эффективны, когда вам нужно динамически передавать фильтры из глобальной области, URL-адреса или других контекстов. Это расширенная функция, которую мы не можем здесь описать, но имейте в виду, что она есть.
Сортировка
В разделе Критерии сортировки
вы можете добавить поля, которые будут использоваться для сортировки представления. Давайте найдем дату создания узла (содержимое : дата публикации
) и добавим ее в представление, чтобы отсортировать список в порядке убывания.
Обратите внимание, что вы также можете предоставить эти поля конечному пользователю и позволить им выполнять свою собственную сортировку.
Заключение
Итак, мы здесь. Мы собрали простой вид, который отображает основную информацию обо всех статьях на сайте. При этом мы увидели, как создать представление и каковы некоторые возможности его формата. Мы обсудили дисплеи и создали нашу собственную страницу, которая отображает View. Мы также увидели, как можно добавлять поля и в чем разница между полями
и контентом
, когда речь идет о представлениях. И, наконец, мы рассмотрели, какие существуют основные критерии фильтрации и сортировки и как они работают.
К сожалению, мы коснулись лишь поверхности Views. Как опытный пользователь Views, я чувствую, что ничего не могу сказать о его возможностях. Это потому, что он настолько сложен, что шаги, которые мы сделали, бледнеют по сравнению с ним. Но вы должны начать с основ и понять фундаментальные концепции, прежде чем переходить к более захватывающим функциям.
В Views есть много других функций и опций, которые действительно делают его незаменимым практически для любого сайта Drupal. Поэтому я рекомендую вам потратить некоторое время на его изучение, если вы хотите эффективно работать с Drupal.
Фильтр комбинирования полей | Просмотры Открытый фильтр | Drupal 7 | Drupal Development
Для drupal development требуется отображать контент с помощью представлений. Drupal позволяет нам создавать контент с определенным типом контента на нашем веб-сайте. Контент, созданный в этих типах контента, может отображаться в различных форматах на веб-сайте drupal с помощью модуля просмотров. Иногда требуется разрешить пользователям фильтровать контент в соответствии с полями, доступными в типе контента, и эта функциональность обеспечивается фильтрами просмотра.В этом блоге мы увидим, что происходит, когда конечному пользователю разрешается выполнять поиск по нескольким полям с одним полем поиска на странице просмотра.
Давайте создадим тип контента «Событие», в котором будут храниться детали предстоящих событий drupal с заголовками полей, деталями, датой начала, датой окончания, контактным лицом и адресом электронной почты. Теперь нам нужно показать все события, созданные на сайте. Для этого мы создаем простое представление, которое показывает список контента, размещенного в типе контента события. Убедитесь, что вы выбрали поля в формате отображения при создании представления.Ниже приведены основные настройки представления, которые вам нужно выбрать во время создания этого представления.
Это предоставит нам простой список всех событий, опубликованных в рамках типа содержимого события. Теперь мы добавим фильтр поиска, который позволит пользователю искать контент в этом представлении по нескольким полям с одним окном поиска.
Для этого добавьте еще один фильтр под названием « Global: Combine fields filter ».
В форме конфигурации фильтра следуйте инструкциям, приведенным ниже:
1.Установите флажок «Показать этот фильтр посетителю» и в поле «оператор».
2. Выберите «содержит» для поиска текста.
3. В поле «Выберите поля для объединения для фильтрации» выберите поля, по которым ваши пользователи будут основывать свой поиск. Сейчас мы хотим, чтобы пользователь искал событие по заголовку и телу.
После применения этого открытого фильтра мы получим поле поиска в верхней части страницы отображения представления, и с помощью этого поля поиска мы сможем искать контент, указанный в представлении.
Одно из лучших применений глобального фильтра комбинирования полей — это когда мы хотим выполнить поиск определенного типа контента из блока поиска в одной из областей сайта. Для этого в расширенной области представлений есть параметр «Открытая форма в блоке»: установите для этого параметра значение «Да» и сохраните представление. Теперь перейдите к списку блоков, там будет новый открытый блок формы с тем же именем, что и ваше представление. Назначьте этому блоку область, чтобы отображаемое поле поиска отображалось в выбранной области.
Теперь вы увидите, что ваш поисковый фильтр перемещен из верхней области просмотров в выбранную вами область.Этот блок поиска доступен по всему сайту, поэтому он может работать как глобальный поиск только по событиям на сайте. Если мы выполним поиск «Лондон» в поле поиска с любой страницы сайта, он перенесет нас на страницу просмотра предстоящих событий Drupal с результатами поиска по содержанию событий, которые содержат текст «Лондон» в поле заголовка или поле тела.
Как вы можете видеть на снимке экрана выше, для удобства использования я изменил имя блока на «Поиск предстоящих событий» из конфигурации блока и кнопку «Фильтр» на кнопку «Поиск» в представленных настройках стиля формы.С помощью глобального фильтра комбинирования полей мы можем добавить дополнительные критерии фильтрации открытых полей для подробного поиска. Это также позволяет нам создавать разные блоки поиска для разного типа контента.
3.5.7. Агрегация данных в представлениях.
Модуль Views позволяет не только выводить данные из таблиц Drupal, но также умеет вычислять эту строку и группировать результаты. Эта функция называется агрегированием.
По умолчанию в Drupal есть Словарь таксономических тегов. Создадим блок с наиболее популярными тегами и отобразим в конце каждого тега, сколько материалов на сайте с этим тегом.Получаем примерно такой список:
Друпал 9 (5)
Друпал 8 (3)
PHP (2)
Для начала вам нужно будет создать статьи и привязать к ним теги.
/ узел / добавить / артикул
Создав небольшое количество статей, можно переходить к делу.
/ admin / structure / views / add
Добавить блок просмотров, выбрать таксономию и теги:
Далее вам нужно включить агрегирование в Views:
Теперь у нас есть дополнительные настройки для агрегации в полях:
Теперь добавьте содержимое ОТНОШЕНИЙ с термином:
Выберите Требовать этот рейтинг, чтобы подсчитывать только контент, в котором выбран тег:
Теперь нам нужны два поля Term Taxonomy (Name), первое прячем:
Во втором поле задаем тип агрегации Count:
Теперь, если вы обновите предварительный просмотр представления, вы уже увидите количество использования каждого из терминов таксономии:
Теперь осталось добавить имя тега перед каждым числом.Для этого мы используем второе поле, в котором мы отображаем первое скрытое поле и в скобках значение второго поля. Для этого воспользуемся настройкой Overwrite Results:
.В раскрывающемся списке ШАБЛОНОВ ЗАМЕНЫ мы можем увидеть, какие поля мы можем использовать при перезаписи этого поля.
{{name}} ({{name_1}})
Второе поле записываем в круглые скобки так, чтобы наш номер был в скобках. Фигурные скобки взяты из Twig, мы займемся этим позже, а пока нам достаточно знать, что если мы будем использовать эти значения в {{}}, они будут заменены значениями нужных нам полей.
В результате у вас должны появиться такие поля:
Как это должно выглядеть:
Drupal Tutorial: Использование представлений для создания алфавитного списка терминов таксономии
Алфавитный список тегов — отличный способ организовать контент для большого веб-сайта с множеством узлов, помеченных терминами таксономии. В Drupal это также называется представлением типа «глоссарий». Это особенно полезно для сайта электронной коммерции, где кто-то может захотеть просмотреть алфавитный список производителей или просмотреть алфавитный список категорий продуктов.
Чтобы лучше понять, о чем я говорю, вот что мы собираемся построить в этом уроке:
Модуль Views для Drupal готов к работе с глоссарием — проверьте его на странице admin / structure / views и найдите Глоссарий (по умолчанию он отключен). Если вы отредактируете это представление, вы увидите, что это не очень красивый список всего контента, организованный в алфавитном порядке.
Мы собираемся взять основную идею этого представления и распространить ее на нашу таксономию.Мы также сгруппируем термины таксономии по первой букве, чтобы страница выглядела красивее. В этом руководстве предполагается, что у вас уже настроена таксономия с вашими терминами и вы пометили свои узлы соответствующими терминами.
1. Создайте новый вид
Добавьте новое представление в admin / structure / views / add. Мы будем называть это просто списком терминов от А до Я. Мы будем показывать термины таксономии типа «phapro» (это таксономия, созданная Devel generate — просто выберите здесь желаемую таксономию). Мы также хотим создать страницу — дать ей заголовок и путь и указать, что она отображается в формате сетки.Введите «0» для количества отображаемых терминов — тогда будут отображены все термины. Я также создал ссылку в меню, чтобы ее было легче найти, пока мы над ней работаем. Когда вы настроите его так, как вам нужно, нажмите «Продолжить и отредактировать».
2. Сгруппировать термины в алфавитном порядке
Чтобы сгруппировать термины в алфавитном порядке в красивые таблицы, нам сначала нужно создать список терминов таксономии, который показывает только первую букву терминов. Мы будем использовать этот список, чтобы красиво сгруппировать термины в таблицах, где в каждой таблице перечислены только термины, начинающиеся с этой буквы алфавита.Сначала добавьте поле: Термин таксономии: имя.
Дайте ему пока красивый ярлык (мы удалим его позже). В противном случае это запутается, поскольку у нас есть два поля, в которых используется одна и та же информация. Я назвал это «Группирование», так как это все, для чего мы собираемся его использовать. Не забудьте исключить из отображения.
В разделе результатов перезаписи обрежьте до максимальной длины 1 и снимите флажки «обрезать по границе слова» и «добавить многоточие».
Теперь мы можем использовать это поле, чтобы сгруппировать наши термины в таблицы, где в каждой таблице перечислены все термины, начинающиеся с этой буквы алфавита.В разделе «Сетка формата — Настройки» выберите «Группировка поля» «Группировка» или как вы назвали свое новое поле, которое отображает только первую букву термина таксономии. Применить ко всем дисплеям.
Теперь вы должны увидеть, что ваши термины хорошо сгруппированы по первой букве.
3. Создайте страницу просмотров для каждой буквы алфавита
Мы также хотим создать страницу, которая отображает все термины таксономии, начинающиеся с любой заданной буквы алфавита, с путем примерно такого пути: http: // [ my site ].com / a-z-list-of-terms / [ буква алфавита ]. К счастью, Views позаботится об этом за нас, используя мощь контекстных фильтров. Контекстные фильтры берут информацию из пути и используют ее для фильтрации представления, что нам и нужно — мы хотим, чтобы представления брали [ буква алфавита ] из пути и использовали ее для фильтрации терминов таксономии по этой букве. В разделе «Дополнительно» добавьте контекстный фильтр: термин таксономии: имя. Если значение фильтра отсутствует в URL-адресе, оставьте его как «Отображать все результаты» — мы не хотим, чтобы представления выполняли какую-либо фильтрацию, если в пути нет [ буквы алфавита ].
В разделе «Дополнительно» выберите «Режим глоссария» и «Максимальное количество символов 1. Применить».
4. Создать список от А до Я
Далее мы собираемся создать блок, который будет отображать список первых букв в симпатичном списке над сетками группирования. Это позволит пользователям щелкнуть любую букву и перейти на страницу со списком всех терминов, начинающихся с этой буквы (это страницы, которые мы только что создали с помощью контекстного фильтра на шаге 3).
Добавьте блок к вашему обзору.В разделе «Дополнительно» добавьте контекстный фильтр ( изменить : если для вашего блока представлений уже есть контекстный фильтр, который был перенесен со страницы представлений, которую мы только что создали, удалите контекстный фильтр из вашего блока представлений. новый сейчас). Для всей работы над этим блоком убедитесь, что у вас выбран For This block (override), поскольку мы не хотим / не должны добавлять его на страницу, которую мы только что закончили.
Выберите термин таксономии: Имя и Применить (этот экран).Когда значение фильтра недоступно, вам нужно «отображать сводку», отсортированную по алфавиту, неформатированную и отображать элементы встроенными. Вам решать, хотите ли вы отображать количество записей со ссылкой. Я думаю, что без подсчета записей он выглядит чище. С подсчетом записей вы получите что-то вроде A (1) B (2) C (10). Это говорит о том, что представления, когда нет ничего для фильтрации (т. Е. На пути нет ничего, относящегося к алфавитному списку терминов таксономии), отображают сводку всех результатов.
Прокрутите вниз после этого, как только вы закончите, а затем также укажите критерии проверки в разделе «Когда значение фильтра доступно» и выберите базовый валидатор, скройте представление.
Наконец, разверните раздел «Еще» и выберите режим «Глоссарий», ограничение на количество символов 1, Регистр (верхний регистр) и Регистр в пути (нижний регистр). Здесь мы просто говорим режиму глоссария ограничиваться первой буквой нашего термина. Если бы мы этого не сделали, наш список выглядел бы примерно так (что нам не нужно, нам нужен только алфавит):
Сделайте список в верхнем регистре (чтобы это был список вроде A B C E G и т. Д., А не a b c e g).Для пути сделайте его строчными буквами, так как довольно стандартно сохранять пути в нижнем регистре. Подать заявление.
Теперь у нас должен быть неполный список алфавита. Обратите внимание, что здесь отображается только часть алфавита, поскольку в нашей таксономии нет терминов, начинающихся с каждой буквы алфавита.
5. Добавьте на страницу алфавитный список терминов, сгруппированных по алфавиту
Теперь мы просто хотим встроить наш алфавитный список на нашу страницу с сгруппированными терминами, чтобы люди могли щелкнуть любую букву, чтобы перейти на страницу, где перечислены только термины, начинающиеся с этой буквы.Вернитесь на нашу страницу просмотров и нажмите кнопку «Добавить» для заголовка.
Выберите Global: View area и Apply (этот экран).
Выберите блок просмотра, который мы создали на шаге 4, и нажмите «Применить».
Теперь мы должны увидеть в нашем предварительном просмотре алфавитный список, а также сетки терминов, перечисленных по буквам. Сохраните и проверьте вид на своем сайте.
Последнее, что вы, вероятно, захотите сделать, — это удалить «Группирование: b» из каждой сетки.Мы сделали это, чтобы было легко различить 2 одинаковых поля просмотра. Отредактируйте представление, а затем отредактируйте термин Таксономии: Имя (Группировка). Снимите флажок «Создать метку», а затем «Применить». Вы увидите, что ваши термины теперь сгруппированы только по одной букве алфавита, но вы также поймете, почему первоначальная настройка представления может сбивать с толку, если в нем не было метки, позволяющей отличать два поля друг от друга. конфигурация просмотра.
(сбивает с толку):
6.Наслаждайтесь
Изучите свою страницу немного, если хотите лучше понять, почему мы настроили просмотр именно так.
Если вы щелкнете по любому заданному термину таксономии, вы попадете на страницу, на которой перечислены все узлы, помеченные этим термином. Это поведение Drupal по умолчанию, и оно исходит из того факта, что в представлении для нашего поля терминов таксономии мы выбрали «связать это поле со страницей терминов таксономии».
Если вы щелкните любую букву, отображаемую в блоке в верхней части нашего представления, вы попадете на страницу, на которой перечислены только термины таксономии, начинающиеся с этой буквы алфавита.Проверьте путь здесь — http: // [ мой сайт / a-z-list-of-terms / [ буква алфавита ]. Эта страница построена на основе созданной нами страницы представлений, на которой мы добавили контекстный фильтр, использующий режим глоссария.
Надеюсь, это было полезно!
Учебник по представлениям Drupal | alvinalexander.com
Это руководство о том, как создать представление с помощью модуля Drupal Views. В этом примере я создам простое представление таблицы базы данных комментариев Drupal.Я продемонстрирую, как создать это представление как узел Drupal со связанным URL-адресом и элементом меню, поэтому, когда вы закончите, вы сможете получить к нему доступ по URL-адресу, например:
http://example.com/db/comments
Для начала вам понадобится установленный модуль Drupal Views. Хотя это не обязательно, также очень полезно, если у вас также установлен модуль расширенной справки Drupal. (Если вы просто будете думать об этом как о необходимости, это сделает вашу жизнь намного проще.)
Также будет очень полезно, если у вас есть несколько комментариев в вашей базе данных Drupal, чтобы вы могли видеть их в своем представлении.
Наконец, я пройдусь по этому руководству, используя Drupal 6, и у меня включена тема Garland. Я считаю, что вы можете выполнить эти шаги с Drupal 7 и другими темами, но я их еще не тестировал.
Желаемый вид
Представление, которое я хочу создать, представляет собой простое представление таблицы базы данных «комментариев» Drupal. В целях предотвращения спам-комментариев на моих веб-сайтах я хочу видеть дополнительную информацию о комментариях, которые были отправлены на мой веб-сайт.Например, когда я вижу, что несколько пользователей с одного IP-адреса отправили комментарии почти одновременно, они почти всегда являются спамом, и я не вижу эту информацию в обычном представлении комментариев Drupal.
Следовательно, мой новый «просмотр комментариев» будет выглядеть примерно так:
Дата | Имя хоста | Электронная почта | Название |
---|---|---|---|
29.05.2011 — 16:53 | 127.0,0.1 | [email protected] | Поддельный комментарий |
29.05.2011 — 16:54 | 127.0.0.1 | [email protected] | Еще один фейковый комментарий |
В этом руководстве по представлениям Drupal я рассмотрю шаги, необходимые для создания этого представления. Я пока не буду включать скриншоты, поэтому вы захотите использовать свою собственную установку Drupal Views, чтобы не отставать от меня.
Создание желаемого представления Drupal
После установки и включения модуля Drupal Views перейдите в Site Building> Views> Add (с URI-адресом «admin / build / views / add») и введите эти значения в отображаемую форму:
Поле просмотров | Данные для ввода |
---|---|
Просмотр имени: | Комментарии |
Посмотреть описание: | Некоторые поля из таблицы комментариев |
Просмотреть тег: | комментарий |
Тип вида: | Узел |
Первые два поля довольно легко понять.В третьем поле надпись «тег» немного необычна. А пока просто введите его здесь, и вскоре вы увидите, где он отображается в пользовательском интерфейсе. В четвертом поле мы выбираем тип представления узла, потому что мы хотим иметь доступ к этому представлению из системы меню Drupal и / или URL-адреса.
Нажмите кнопку «Далее», когда будете готовы, и отобразится устрашающий пользовательский интерфейс представлений Drupal. Не бойся, мы пройдем через это вместе.
Вид по умолчанию
Предполагая, что вы используете пользовательский интерфейс Garland в Drupal 6, в верхнем левом углу пользовательского интерфейса представлений вы увидите слово «По умолчанию» со стрелкой, указывающей вправо, с дополнительным текстом, говорящим, что это «настройки по умолчанию для этого представления».На панели настроек просмотра вы можете увидеть свой тег «комментарии». Вот как это выглядит в моей тестовой системе Drupal 6:
Хороший способ подумать о том, что здесь происходит, — это то, что модуль Views реализует часть известного паттерна Model-View-Controller (MVC). Модуль представлений позволяет вам создать представление по умолчанию , в котором вы определяете данные, а затем определяете способ отображения этих данных по умолчанию, а затем вы можете добавлять к этим данным дополнительные представления. (Это описание не на 100% верно, но это хорошее начало.)
Возвращаясь к нашей цели, мы хотим отображать наше представление в виде веб-страницы с URL-адресом, поэтому для этого мы (а) сначала настраиваем желаемую информацию о представлении как информацию по умолчанию, затем (б) создаем представление Page , который расширяет наш вид по умолчанию для информации .
Теперь мы рассмотрим каждую из панелей пользовательского интерфейса Drupal Views.
Основные настройки
На панели «Основные настройки» щелкните каждое поле, указанное в таблице ниже, а затем измените значение этого поля на значения, указанные в этой таблице.Когда вы щелкаете каждое поле, форма будет отображаться под основными панелями пользовательского интерфейса представлений.
Поле просмотров | Данные |
---|---|
Имя: | Комментарии |
Заголовок: | Таблица комментариев |
Стиль: | Стол |
Использовать пейджер: | Полный пейджер |
Доступ: | роль |
Пустой текст: | Нет комментариев к отображению |
После ввода каждого значения нажимайте кнопку «Обновить».Не беспокойтесь об ошибках, которые могут отображаться в интерактивном предварительном просмотре под формой ввода данных. Это происходит потому, что модуль Drupal Views пытается сгенерировать предварительный просмотр нашего представления, но мы еще не сказали ему, какие данные использовать. (Когда вы освоитесь с пользовательским интерфейсом представлений, вы можете сначала ввести данные поля, но сейчас я просто хочу работать с панелями в том порядке, в котором они показаны.)
Доступ: Нам нужно сделать еще одно изменение здесь. Для поля доступа мы сказали Drupal использовать роль, но не сказали, какую роль.Вернитесь к этому полю и щелкните значок «инструмент» справа от поля «Доступ». Это отобразит доступные роли в вашей системе. Выберите роль для пользователей, которым вы хотите видеть ваше представление, например, таких как «Администратор» или, по крайней мере, «Пользователь, прошедший проверку подлинности». Затем нажмите «Обновить», чтобы сохранить это изменение.
Вот как должна выглядеть панель основных настроек, когда вы закончите этот шаг:
Поля — Часть 1
На этом этапе мы можем пропустить панели Relationships и Arguments , так как они нам не нужны для этого примера.Затем мы щелкнем значок плюса на панели Поля и ответим на запросы там.
В этом примере я буду использовать только несколько полей, так как именно здесь мы делаем много работы, и я не хочу терять вас во всех мелких деталях каждого поля.
Вот как работает пользовательский интерфейс Drupal Views:
- Мы собираемся сказать, какие поля мы хотим в нашем представлении, а затем
- Мы ответим на подробные вопросы по каждому полю.
Итак, это действительно волшебник, хотя на самом деле он на него не похож.
После этого введения нажмите «+» рядом с меткой «Поля».
Затем на новой панели, которая отображается под основной областью пользовательского интерфейса представлений, есть раскрывающийся список с именем «Группы». Щелкните раскрывающийся список и выберите пункт «Комментарии». До того, как вы это сделали, модуль Views отображал много информации о базе данных, но когда вы нажимали «Комментарии», это действовало как фильтр, и теперь модуль Views показывает только поля базы данных, относящиеся к комментариям.
Затем установите флажки рядом со следующими полями:
- Комментарий: Автор
- Комментарий: Имя хоста
- Комментарий: почта
- Комментарий: Дата публикации
- Комментарий: Название
Верх этого виджета выбора поля должен выглядеть следующим образом:
Когда вы их выбрали, нажмите кнопку «Добавить», а затем мы укажем детали для каждого поля.
Поля — Часть 2
Что происходит сейчас, так это то, что вы собираетесь пройти через мастер и ответить на вопросы по каждому полю, которое вы только что выбрали.Поскольку мы только что выбрали пять полей, мы собираемся пройти через пять панелей в «мастере полей». (Модуль Views невероятно мощный, но эту часть пользовательского интерфейса можно улучшить.)
Прямо сейчас вы должны увидеть панель с заголовком, выделенным жирным шрифтом, который выглядит следующим образом:
Комментарии: Настроить поле Комментарий: Автор
Форма будет выглядеть так:
Если вы видите это название, поздравляю, вы попали в нужное место.(Если вы этого не сделаете, извините, пожалуйста, просмотрите шаги, указанные выше.)
В этой форме внесите изменения в следующие поля:
Убрать HTML-теги: | Установите этот флажок |
Пустой текст: | Введите в это текстовое поле «(автор неизвестен)» |
Свяжите это поле … | Снимите этот флажок |
Нажмите кнопку «Обновить» в этой форме, и вы попадете на следующую панель мастера.
Комментарий: Имя хоста
Следующая панель должна быть помечена как «Комментарий: Имя хоста». Измените эту форму, как описано здесь:
Пустой текст: | (без имени хоста) |
Снова нажмите «Обновить», и вы перейдете к следующему полю.
Комментарий: почта
Сделайте в этой форме очень похожие записи, например:
Убрать HTML-теги: | Включено |
Пустой текст: | (без электронной почты) |
Я включаю здесь опцию «Убрать HTML-теги», потому что пользователь вводит эту информацию, а важная часть любого веб-программирования — никогда не доверять чему-либо, что вводит пользователь.Это поле предназначено для адреса электронной почты пользователя, но вы не можете контролировать, что они на самом деле вводят, поэтому очистка их данных имеет важное значение.
После внесения этих изменений нажмите «Обновить».
Комментарий: Дата публикации
Следующая панель мастера предназначена для поля «Комментарий: Дата публикации». Поскольку это определяется системой, вам просто нужно выбрать формат даты. Они показаны внизу этой формы. Просто выберите формат даты по умолчанию или выберите другой и нажмите «Обновить».
Комментарий: Название
Заголовок — это тема, которую пользователь помещает в свой комментарий, поэтому мы снова воспользуемся этими настройками:
Убрать HTML-теги: | Включено |
Пустой текст: | (без названия) |
Нажмите «Обновить».
Предварительный просмотр
Теперь, поскольку это было последнее из пяти полей, которые мы указали, мастер полей представлений просто подошел к концу, и, если ваша система представлений использует информацию по умолчанию, предварительный просмотр в реальном времени должен отображаться под основными представлениями Drupal. Панели пользовательского интерфейса.Если у вас есть какие-либо комментарии в вашей системе, они будут отображаться в табличном формате, а в обзорах также будет отображаться эта другая информация под Live Preview:
- Query — запрос SQL, выполняемый для визуализации этого представления
- Заголовок — заголовок, который мы дали этому виду
- Путь — (здесь еще нет пути, но он будет, когда мы создадим наше представление страницы через несколько секунд)
- Время построения запроса, время выполнения и время визуализации просмотра
Вот как этот Live Preview выглядит в моей системе Drupal 6:
Опять же, если у вас есть некоторые данные комментариев в вашей базе данных, это должно быть для вас моментом гордости, так как теперь вы должны смотреть предварительный просмотр вашего нового представления комментариев Drupal.
Добавление критериев сортировки
Хотя ваше новое представление Drupal теперь успешно работает, оно еще не идеально. В реальном мире вам нужно будет отсортировать вид по чему-нибудь. В моем случае я хочу отсортировать его по полю «Комментарии: Дата публикации», поэтому мы выполним следующие шаги, чтобы это произошло:
- Щелкните «+» рядом с панелью Критерии сортировки .
- Под пользовательским интерфейсом представлений вы увидите знакомую панель «выбора полей».
- При необходимости прокрутите вниз и установите флажок рядом с полем «Комментарий: дата публикации», затем нажмите кнопку «Добавить».
- Опять же, вы находитесь в «мастере полей», поэтому … щелкните По убыванию на панели Порядок сортировки на следующем экране и оставьте для параметра Гранулярность значение Второе.
- Нажмите кнопку Обновить.
- Ваш обновленный Live Preview должен отображаться, и, если у вас есть более одного комментария в вашей системе, теперь они должны быть отсортированы по полю даты публикации.
Сохранить вид
Одна ошибка, которую я все время делаю, — это то, что я забываю сохранить свое представление, поэтому на этом этапе я настоятельно рекомендую нажать кнопку «Сохранить» под панелями представлений.
Вы можете думать о процессе сохранения следующим образом: пока вся проделанная вами работа сохраняется только в ОЗУ в вашем сеансе входа в Drupal. Когда вы нажимаете кнопку «Сохранить», модуль Drupal Views сохранит ваше представление в базе данных, чтобы вы могли получить к нему доступ позже.
Создать просмотр страницы
Как я упоминал ранее, мы только что создали представление «По умолчанию» для данных, которые нам нужны. Это отличное начало, но в нашем случае мы действительно хотим создать представление Page , чтобы мы могли получить доступ к данным этого представления через URL-адрес и пункт меню.
Примечание. Хотя в настоящий момент такой многоэтапный подход может показаться немного раздражающим, это очень эффективный подход, и вы, возможно, оцените его позже.
В левой части пользовательского интерфейса представлений есть раскрывающийся список со значением по умолчанию «Страница» с кнопкой «Добавить экран» чуть ниже. Чтобы создать представление нашей страницы:
- Убедитесь, что в раскрывающемся списке выбрана «Страница», затем
- Щелкните Добавить дисплей.
Чуть выше раскрывающегося списка вы увидите, что была создана новая вкладка «Страница», и теперь это активное представление.Чтобы было ясно, у вас есть исходное представление по умолчанию, которое находится на вкладке с надписью «Комментарии», и у вас должна быть новая вкладка с именем «Страница».
Пока вы находитесь на вкладке «Страница», когда вы смотрите на пользовательский интерфейс «Представления», вы увидите, что теперь доступна новая панель «Параметры страницы», и, как следует из названия, именно здесь мы указываем подробности о нашем новом просмотр страницы .
Параметры страницы
Теперь мы просто заполняем панель «Параметры страницы», как и предыдущие панели. Щелкните каждое поле и введите данные, показанные ниже:
Путь: | дб / комментарии |
Меню: | Обычный элемент меню Заголовок = «Таблица комментариев» Описание = «Подробная информация о комментариях» Меню = Навигация Вес = 0 |
После ввода данных нажмите кнопку «Обновить».Панель настроек вашей страницы должна выглядеть так:
Опять же, если вас устраивает вид, нажмите кнопку «Сохранить», чтобы сохранить изменения в базе данных.
Может показаться, что мало что изменилось, но если вы посмотрите под Live Preview, вы увидите, что теперь отображается ваш URL. Вы можете щелкнуть там этот URL-адрес или подождать немного, и мы рассмотрим ваш новый пункт меню.
Ваш пункт меню просмотра
У вас должен быть новый пункт меню Drupal под названием «Таблица комментариев».Предполагая, что вы используете тему Garland в Drupal 6, посмотрите на систему меню слева, и вы найдете там свой новый пункт меню.
Если вы щелкните этот пункт меню правой кнопкой мыши и откроете его в новом окне, вы должны увидеть новое представление. Вот как будет выглядеть ваше представление всякий раз, когда вы к нему обращаетесь, и если вы посмотрите на поле URL / адреса вашего браузера, вы увидите, что оно доступно по указанному вами ранее URL.
Если все работает, поздравляю, вы успешно создали представление Drupal, которое доступно как узел / страница Drupal по указанному вами URL-адресу и пункту меню (!).
Список представлений Drupal
Мы закончили создание нашего первого представления Drupal. Если вы хотите еще немного поэкспериментировать со своей точкой зрения, попробуйте. Попробуйте изменить некоторые из этих полей выше и посмотрите, что произойдет. Например, поля Header и Footer делают то, что вы ожидаете, и создают заголовок над вашим представлением и нижний колонтитул под вашим представлением. Попробуйте изменить критерии сортировки и все, что хотите.
Здесь следует помнить, что у вас есть представление по умолчанию и представление страницы, поэтому при внесении изменений обратите внимание на то, на какой вкладке вы работаете.(В ближайшее время напишу подробнее на эту тему.)
Однако, прежде чем вносить какие-либо изменения, я рекомендую щелкнуть ссылку List в верхней части вашего представления (технически это вкладка List, но в теме Garland она отображается как ссылка). Это представление List показывает все Drupal Представления модуля представлений, которые доступны в настоящее время, и если это первое созданное вами представление Drupal, ваше представление должно отображаться вверху списка и будет включено.
Вот как должно выглядеть ваше новое представление «комментариев» в списке представлений Drupal:
Когда вы будете готовы вернуться к просмотру, просто щелкните ссылку «Изменить» справа от него, и вы вернетесь туда, где были раньше.
Учебное пособие по модулюDrupal Views — Резюме
Я надеюсь, что это руководство по модулю Drupal Views было полезным.