4.5.6. Дополнительные настройки Views.

В этом статье мы рассмотрим последний блок настроек Views Others (Другое)

Views others settings

Машинное имя. ID дисплея, по умолчанию задается как page_1, block_1 и дальше добавляется 1 к названию дисплея (page_2, page_3 и т.д.). Желательно переименовывать машинное имя на что-то более человекочитаемое, если у вас много дисплеев в одном представление.

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

 Использовать AJAX. Добавляет ajax (возможность загрузки контента без перезагрузки страницы) во Views. Ajax работает на пагинатор представления, то есть он будет переключать материалы между страницами пагинатора, без перезагрузки всего сайта. Это удобно для пользователя, но не очень хорошо для Яндекса (Google умеет работать с Ajax), Яндекс может не проиндексировать страницы с Ajax.

Скрыть вложения в анонсе. Скрывает attachment представления, когда у вас не задан контекстный фильтр.

Контекстные ссылки. Здесь можно выбрать показывать или нет контекстные ссылки. Возможно вы захотите убрать контекстные ссылки на редактирования представления (чтобы ваш клиент не зашел во views и не накликал там чего-нибудь) или заменить их своими.

Использовать агрегацию. Мощный инструмент, который использует в запросе к базе данных COUNT и GROUP и позволяет подсчитать количество чего-угодно на лету. Мы будем использовать его в следующем уроке.

Настройки запроса. Здесь нас больше всего интересует настройка DISTINCT (Уникальность), когда вы используете связи (relations), то у вас могут дублировать записи если связь многие ко многим (например записи в блоге могут иметь много рубрик и рубрики могут относиться ко многим записям в блогах).

Кеширование. Views очень тяжелый модуль, он делает громоздкие запросы к базе с большим количеством join'ов, поэтому желательно, чтобы он это делал как можно реже. Если у вас есть блоки новостей, статей выведенные на Views и которые редко обновляются, то есть смысл включить для них кеширования хотя бы на 1 час, чтобы блок обновлялся 1 раз за час, а в остальное время будет показываться закешированная копия блока.

CSS-класс. Старайтесь добавлять и использовать дополнительные классы, это позволяет задать человекочитаемый класс и использовать его в CSS коде.

 

Комментарии

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Добрый вечер. Не подскажите..

Добрый вечер. Не подскажите.... У меня возникла проблема с дополнительной настройкой, точнее она совсем не дополнительная, речь идёт о пункте "Меню". Дело в том, что я не могу вывести табы во views. Они вообще ни как не выводятся( У меня есть страницы вида hockey/%/news, hockey/%/stadium
Я пытаюсь вывести их в табах, чтобы пользователь мог ходить по страницам раздела Хоккей и лиги (контекстный фильтр). На первой он сможет прочитать новости, а на второй посмотреть информацию о стадионах выбранной лиги. Помогите пожалуйста, подскажите как такое сделать, вывести контекстные ссылки в меню или табы. Спасибо.

 Вам нужен default menu tab:

 Вам нужен default menu tab:
/hockey

тогда вы сможете остальные пути добавлять в menu tab:
/hockey/% 

Чтобы табы отображались как табы ноды view, edit, devel. Тогда menu default tab должен иметь путь
hockey с таким же callback'ом как и hockey/%. Можете посмотреть hook_menu модуля node (node_menu()).

Возможно это немного путает, но в интернете по этому поводу много видео и документации:
https://www.drupal.org/node/1578582
https://www.youtube.com/watch?v=EoSnUO9KB00
 

Добрый день! За что люблю Ваш

Добрый день! За что люблю Ваш сайт, так это за то, что вы всегда отвечаете. Спасибо за отзывчивость, и отдельное спасибо за ссылки на материалы. Дело в том, что я смотрел это видео, у меня даже получилось вывести табы с постоянными адресами, то есть без %. Но с динамикой ну никак не выходит.....((( Я примерно понял принцип вывода табов этих, ну а как быть, если hockey и скажем khl - это термины таксономии? Проще говоря, у меня есть словарь таксономии "Виды спорта и лиги":
Футбол (/football)
--РФПЛ (/football/rfpl)
--АПЛ (/football/apl)
Хоккей (/hockey)
--КХЛ (/hockey/khl)
--НХЛ (hockey/nhl)
В скобках я указал синонимы pathauto
Во views я создаю представление по адресу taxonomy/term/% (проблема в том что адрес закачивающийся на % не может быть табом - мне пишет) в качестве контекстного фильтра ставлю содержимое имеет идентификатор терм. таксономии с глубиной, которая равна 1. Таким образом я переопределяю вывод, настроенная вьюха выводит все четко, при чем как родительский термин так и дочерний. На странице термина у меня будет информация о турнире. Теперь я бы хотел вывести эти злосчастные табы, чтобы пользователь мог передвигаться по термину и искать нужную инфу. Скажем хочу добавить таб новости, таб стадионы, таб статьи. Вопросов как выводить информацию там - нету, основная проблема именно вывести табы и разобраться с адресами.
Значит я создаю еще один дисплей, ставлю адрес taxonomy/term/%/news аналогично taxonomy/term/%/stadiums и taxonomy/term/%/articles. Естественно ставлю им Меню: вкладка. И, как вы понимаете, ничего не происходит. Вот я и не могу понять, что же делать в таком случае.... Создавать вьюшку по адресу /hockey при том что по такому адресу уже отображается термин как-то неправильно мне кажется. Создавать вьюшку taxonomy/term/%, /hockey, /hockey/%/stadiums вообще какой-то бред :)
Как бы сделать именно в данной ситуации? Было бы здорово если бы вы мне помогли и посоветовали... Я думаю не слишком наглею, что прошу о таком, потому как уверен, что аналогичная проблема еще может у кого нибудь возникнуть, и он попадёт на ваш сайт из поиска и найдет ответ или вы можете снять урок по данной теме (раньше помогали на друпал ру, но сайт в конец испоганился :( люди обозлились, стали задирать, тыкать носом в очевидные для НИХ вещи, но совершенно неочевидные для меня например). Именно так, собственно, я и нашел ваш сайт еще в 2014 году, теперь почти каждый день захожу смотрю, учусь, читаю. Очень уважаю Ивана за его труд, за титаническую работу, по его урокам я осваивал Д7 (просто супер) + темизацию, по его урокам начал знакомиться с Д8, но вот что-то с этими табами не заладилось. Вся надежда на Вас :) Надеюсь поможете. Спасибо

Я думаю проблема в том, что

Я думаю проблема в том, что нет реального пути /hockey/%, это скорее всего у вас alias, а не internal path (такой как node/nid, taxonomy/term/tid, user/uid)

Нужен именно реальный путь, вы можете привязаться для начала к /taxonomy/term/tid пути, например,
/taxonomy/term/%/stadiums
/taxonomy/term/%/articles
Тогда эти пути автоматически привяжутся к уже существующим табам view, edit и будут рядом с ними.

Чтобы табы появились по пути /hockey/%/stadiums, нужно чтобы существовал реальный путь /hockey (module.routing.yml с реальным callback'ом, можно для примера посмотреть как это было в 7ке hook_menu). 

Также  в 8ом друпале поменялось определние всех .links (action links, menu tabs links и прочих), теперь они тоже через отдельный файлы определяются. Пример можно посмотреть в /core/modules/node/node.links.task.yml:
 

entity.node.canonical:
  route_name: entity.node.canonical
  base_route: entity.node.canonical
  title: 'View'
entity.node.edit_form:
  route_name: entity.node.edit_form
  base_route: entity.node.canonical
  title: Edit
entity.node.delete_form:
  route_name: entity.node.delete_form
  base_route: entity.node.canonical
  title: Delete
  weight: 10
entity.node.version_history:
  route_name: entity.node.version_history
  base_route: entity.node.canonical
  title: 'Revisions'
  weight: 20
entity.node_type.edit_form:
  title: 'Edit'
  route_name: entity.node_type.edit_form
  base_route: entity.node_type.edit_form
entity.node_type.collection:
  title: List
  route_name: entity.node_type.collection
  base_route: entity.node_type.collection

 https://www.drupal.org/node/2118147 - Вот здесь все подробно расписано как было в 7ом и стало в 8ом.