Оптимальный вывод контента
-
- Сообщения: 46
- Зарегистрирован: 2019.11.03, 16:02
Оптимальный вывод контента
Здравствуйте.
Вопрос сильно начального уровня, если что не так ляпну сильно не пинайте...
Смотрю кругом вывод контента в шаблонах. Самые частые примеры - это через цикл и далее категория статьи, фото, контент, автор, просмотры и т.д. При этом если запрос к базе делать ...->asArray()->... то тут конечно хорошо по количеству запросов к базе, но плохо что не используется актив рэкорд с его удобством в работе (ну это расхожие споры в сети что я нарыл, сам пока не не дошел что к чему).
Так вот, у меня главная в шаблоне просто пестрит: там нужно по три превьюшки вывести для 5 категорий во вкладках своих каждая, далее 4 превьюшки из последних новостей, далее блок из 5 из другой категории и т.д., а уже в колонке так опять новые выборки популярных, комментируемых и проч.
Поюзал нарытое в сети древовидное меню, реализованное в качестве виджета со своим шаблоном и подумал:
1. А что если под каждую такую выборку сделать аналогичный виджет, вырезав из верстки данный блок контента и уже этот кусок через этот виджет уже выводить?
2. Или с точки зрения производительности все же лучше циклы использовать?
3. Выборка из базы используя ...->asArray()->... это действительно идея не очень или лучше забить и жадной загрузкой пользоваться + далее хеширование применять? Единственный минус для себя выяснил в это, что пока не нарыл как таким образом в шаблоне связанные данные выводить, например вместо артиклс->категори->нейм / артикл[контент] вывожу без проблем, а как название уже категории для этой статьи вывести непонятно.
Если сумбур/каламбур или бардак в моей голове непонятен, задавайте уточняющие вопросы ))) А то я как не программист не особо ориентируюсь в правильных терминах.
Вопрос сильно начального уровня, если что не так ляпну сильно не пинайте...
Смотрю кругом вывод контента в шаблонах. Самые частые примеры - это через цикл и далее категория статьи, фото, контент, автор, просмотры и т.д. При этом если запрос к базе делать ...->asArray()->... то тут конечно хорошо по количеству запросов к базе, но плохо что не используется актив рэкорд с его удобством в работе (ну это расхожие споры в сети что я нарыл, сам пока не не дошел что к чему).
Так вот, у меня главная в шаблоне просто пестрит: там нужно по три превьюшки вывести для 5 категорий во вкладках своих каждая, далее 4 превьюшки из последних новостей, далее блок из 5 из другой категории и т.д., а уже в колонке так опять новые выборки популярных, комментируемых и проч.
Поюзал нарытое в сети древовидное меню, реализованное в качестве виджета со своим шаблоном и подумал:
1. А что если под каждую такую выборку сделать аналогичный виджет, вырезав из верстки данный блок контента и уже этот кусок через этот виджет уже выводить?
2. Или с точки зрения производительности все же лучше циклы использовать?
3. Выборка из базы используя ...->asArray()->... это действительно идея не очень или лучше забить и жадной загрузкой пользоваться + далее хеширование применять? Единственный минус для себя выяснил в это, что пока не нарыл как таким образом в шаблоне связанные данные выводить, например вместо артиклс->категори->нейм / артикл[контент] вывожу без проблем, а как название уже категории для этой статьи вывести непонятно.
Если сумбур/каламбур или бардак в моей голове непонятен, задавайте уточняющие вопросы ))) А то я как не программист не особо ориентируюсь в правильных терминах.
Re: Оптимальный вывод контента
Да, такие блоки удбно выводить виджетами.andrej3337 писал(а): ↑2019.12.05, 18:17 Так вот, у меня главная в шаблоне просто пестрит: там нужно по три превьюшки вывести для 5 категорий во вкладках своих каждая, далее 4 превьюшки из последних новостей, далее блок из 5 из другой категории и т.д., а уже в колонке так опять новые выборки популярных, комментируемых и проч.
Re: Оптимальный вывод контента
Для выборок можно и with(...)->asArray()->all() с той же жадной загрузкой делать.andrej3337 писал(а): ↑2019.12.05, 18:17 Выборка из базы используя ...->asArray()->... это действительно идея не очень или лучше забить и жадной загрузкой пользоваться + далее кеширование применять? Единственный минус для себя выяснил в это, что пока не нарыл как таким образом в шаблоне связанные данные выводить, например вместо артиклс->категори->нейм / артикл[контент] вывожу без проблем, а как название уже категории для этой статьи вывести непонятно.
И вместо $артикл->категори->нейм выводить $артикл['категори']['нейм'].
-
- Сообщения: 46
- Зарегистрирован: 2019.11.03, 16:02
Re: Оптимальный вывод контента
Спасибо за ответ.
Хм так $артикл['категори']['нейм'] было логично и без мануала, но по какой-то причине ничего не вывелось...
А можно в двух словах, чем плох ->asArray()->, в мануале ведь дан совет без него выборку делать, хотя по мне так там ничего сверхъестественного для моих задач вроде нет
Re: Оптимальный вывод контента
да ничем он не плох, просто после asArray придется работать с сырыми данными из бд, как с массивом. со всеми вытекающимиandrej3337 писал(а): ↑2019.12.05, 20:08Спасибо за ответ.
Хм так $артикл['категори']['нейм'] было логично и без мануала, но по какой-то причине ничего не вывелось...
А можно в двух словах, чем плох ->asArray()->, в мануале ведь дан совет без него выборку делать, хотя по мне так там ничего сверхъестественного для моих задач вроде нет
Re: Оптимальный вывод контента
Значит не сделали with('категори') и она не добавилась.andrej3337 писал(а): ↑2019.12.05, 20:08 Хм так $артикл['категори']['нейм'] было логично и без мануала, но по какой-то причине ничего не вывелось...
Ничем не плох. Наоборот, часто хорош по производительности для выборок.andrej3337 писал(а): ↑2019.12.05, 20:08 А можно в двух словах, чем плох ->asArray()->, в мануале ведь дан совет без него выборку делать
-
- Сообщения: 46
- Зарегистрирован: 2019.11.03, 16:02
Re: Оптимальный вывод контента
А что это за собой влечет? Ну, к примеру, пользователей у меня нет, только я к админке имею доступ и публикую материалы, соответственно из базы эти сырые данные вывожу и вижу, что для моих целей именно такая выборка вполне удобна и по производительности радует. Мне с этими выведенными данными еще нужно что-то делать в целях безопасности, например? Или с указанным подходом вывод сырых данных на безопасность никак не повлияет?
-
- Сообщения: 46
- Зарегистрирован: 2019.11.03, 16:02
Re: Оптимальный вывод контента
Да похоже где-то ошибка закралась, дома категория вывелась без проблем, а на работе на виртуалке даже с with не выводится, хотя связи посмотрел, там все нормально... а, не важно, на работе тест черновой, пользуюсь в свободные минуты, когда мысля интересная в голову приходит
Re: Оптимальный вывод контента
Надо все равно делать правильно.andrej3337 писал(а): ↑2019.12.06, 15:15 Мне с этими выведенными данными еще нужно что-то делать в целях безопасности, например? Или с указанным подходом вывод сырых данных на безопасность никак не повлияет?
По умолчанию при выводе текстов html::encode, просто даже для того чтобы корректно все отображалось в браузере.
-
- Сообщения: 46
- Зарегистрирован: 2019.11.03, 16:02
Re: Оптимальный вывод контента
Все это пока превью статей, все равно на выходе контент облачаю в эти две штуки
Код: Выделить всё
<?= StringHelper::truncateWords(strip_tags($art['content']), 20); ?>
Вывод статей с пагинацией буду с listview делать, вывод одиночной статьи можно и без ->asArray()-> там ничего страшного, это же не десяток выборок на одну страницу.