Вопрос про views и верный подход.

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

Аватар пользователя pavell_lozin pavell_lozin 29 марта 2018 в 19:31

Здравствуйте. Вопрос может не совсем корректный, но все же мне интересно.

Есть тип материала (страница) "Услуги". И есть десяток созданных полей (стандартным field).
Мне на столько понравилось работать с views, что через поля делать материал (страницу) уже не то.

Вопрос вот в чем: Если я делаю поля скрытыми в manage display (управление отображением), а потом эти же поля вытаскиваю через вьюху и контекстом привязываю к тому же самому id материала, то это нормальный подход?

То есть я скрыл поля на странице и их же вытащил через вьювс на той же самой странице. Не будет ли в этом случае больше нагрузка к бд и снижение производительности? Скрытое поле не рендерится и получает тоже самое свойство как hide($content['field_name']),?;

И если мне нужны ajax комментарии к этой странице, верным ли будет подходом их скрыть и потом вытащить через views ajax на той же странице, где они и были до скрытия?

Комментарии

Аватар пользователя bumble bumble 29 марта 2018 в 19:51

pavell_lozin wrote:

Вопрос вот в чем: Если я делаю поля скрытыми в manage display (управление отображением), а потом эти же поля вытаскиваю через вьюху и контекстом привязываю к тому же самому id материала, то это нормальный подход?

Скорее нет.

Views инструмент, основное назначение которого - выборка данных из БД (в т.ч. с помощью GUI).
Область его применения - построение списков (нод или других сущностей), всякого рода фильтрация, сортировка и т.п.

И даже если Вы использует представления для отображения материалов - лучше использовать режим отображения сущности (Анонс, Полный и т.п.) вместо вывода отдельных полей. (Это скорее ИМХО)

Для удобной настройки внешнего вида отдельных сущностей есть много других инструментов.
В частности, советую обратить внимание на Display Suite и Panels.

Аватар пользователя pavell_lozin pavell_lozin 30 марта 2018 в 0:33

Посмотрел отзывы Display Suite и Panels тоже довольно тяжелые модули.
А, не знаете, сам views больше дает нагрузку, нежели выводить через стандартные поля?

Аватар пользователя bumble bumble 30 марта 2018 в 3:14

Что конкретно Вы пытаетесь измерить?

Ровнять "нагрузку" представлений и дисплей сьюта, это как ровнять молоток с отверткой.
Инструменты - просто предназначены для разных задач.

Аватар пользователя pavell_lozin pavell_lozin 30 марта 2018 в 14:07

Измерить нагрузку на хостинг, потребление памяти, запросы к бд итд.
Читал, что связка DS+panels снижает производительность. Или раньше снижала...

Аватар пользователя bumble bumble 30 марта 2018 в 14:29
1

Верно. Снижает. Как и любой другой дополнительный инструмент.
Прибавление в кодовой базе физически не может не повлиять на работу.
Просто все это можно настраивать, и в целом, для работы это будет обычной страницей. "Нагрузка" - только в момент генерации.

Но, задаваться подобными вопросами это скорее попытка экономии на спичках.
Если Вам нужен инструмент для кастомизации из админки - Вы берете и закрываете глаза на их минусы.
Если можете реализовать без них - супер, конечно так будет меньше "нагрузки".

Аватар пользователя pavell_lozin pavell_lozin 30 марта 2018 в 14:40

Ясно. Просто у меня views делает выборку из статьи, на странице /all. (что-то типа кинопоиска). Но при клике на фильм из страницы-агрегатора views, хочется чтобы внешний вид таблицы сохранялся как во views. Но на самой странице фильма, естественно, обычные поля. А мне хотелось, чтобы они сохраняли вид как во views. Можно конечно переверстать эти стандартные поля, но я думал разницы нет как их показывать:views'ом или стандартными полями.

Аватар пользователя bumble bumble 30 марта 2018 в 14:49

pavell_lozin wrote:

хочется чтобы внешний вид таблицы сохранялся как во views.

Потому и
bumble wrote:

И даже если Вы использует представления для отображения материалов - лучше использовать режим отображения сущности (Анонс, Полный и т.п.) вместо вывода отдельных полей. (Это скорее ИМХО)

Аватар пользователя pavell_lozin pavell_lozin 31 марта 2018 в 0:47

Сегодня смотрел по поводу тизеров, якобы вызывается node_load (Загружает объект узла из базы данных) и нагрузка больше, когда выводятся поля - создается только один запрос.
https://youtu.be/OWT3e0TZUhg?t=59s
С первой минуты. Блин я запутался. Может быть Devel показывает как и сколько идет запросов? В случае тизеров и в случае полей. Очень волнует быстродействие и масштабируемость в будущем.

Аватар пользователя bumble bumble 31 марта 2018 в 7:35

Devel - да, может показывать лог запросов страницы (devel/settings).
Views - может показывать текущий запрос и статистику выполнения в режиме настройки представления (admin/structure/views/settings).

Аватар пользователя pavell_lozin pavell_lozin 31 марта 2018 в 2:34

нашел на хабре 8. [Производительность] Во вьюс предпочитайте использовать стиль ряда "Fields" (поля), а не "Nodes" (ноды). В режиме "Nodes" происходит вызов node_load() на каждой ноде в вашем виде, что может стоить вам более 50 запросов на каждую ноду. В режиме "Fields" происходит просто сбор необходимой информации в одном запросе.

Аватар пользователя pavell_lozin pavell_lozin 1 апреля 2018 в 15:51

Сегодня тестировал SQL запросы Devel'ом. Выводятся 4 материала вьювсом. (Поля заголовок, body, изображение и дата создания)

Поля - 174 запроса (без кэша)
содержимое тизер - 207 запросов (без кэша)

с отключенным views тизеры - 192 запроса.

поля с кэшем от views - 158 запросов
содержимое анонс с кэшем views - 188 запросов.

Аватар пользователя sas@drupal.org sas@drupal.org 30 марта 2018 в 7:50

Если я делаю поля скрытыми в manage display (управление отображением), а потом эти же поля вытаскиваю через вьюху и контекстом привязываю к тому же самому id материала, то это нормальный подход?

Не нормальный, так как Вы отключаете средства которыми решается задача и пытаетесь решить её контрибутным модулем.
Нужна гибкость? Используйте
https://www.drupal.org/project/entity_view_mode + https://www.drupal.org/project/ds
Еще больше гибкости через UI - https://www.drupal.org/project/panels но более тяжелое решение