ЛС2. Вопрос по выводу контента.

Подскажите, как решить вопрос с выводом статей в ЛС2.
Надо на главной раздельно вывести топики по типам, новости в одной ленте, а топики-галереи в другой. Сделал тип топика новость и оставил код topic. Пробовал так получить {$topic->GetTopicTypeByCode('topic')} но не выводит.
Может через смарти функции нельзя вывести и надо отдельный метод для сортировки по типу топика делать?

12 комментариев

avatar
Нужно на одной странице вывеси два разных списка топиков с разными типами?
При запросе к БД для списка топиков нужно использовать условие по topic_type. Где значение «topic» это стандартный тип топиков.
  • ort
  • 0
avatar
Да, переделал так шаблон, как на скрине. Получается настроить раздельный вывод топиков по типам, при помощи смарти не получится?
avatar
Чисто логически — если на главной отображается по 10 постов каждого типа и по дате будут созданы последними 20 только посты 1 типа, то вторая колонка будет пустой?
  • ort
  • 0
avatar
Почему? Последние 10 постов типа 1 и последние 10 типа 2. Или это касалось вопроса о смарти?

В тему топика, кстати: а нельзя ли к движку прикрутить «построитель запросов к БД», подобно тому, как это реализовано в Вордпресс? Было бы удобно прямо из шаблона вызывать нужный сет топиков, особенно, когда не имеешь ни малейшего понятия с какой стороны подойти к написанию плагинов.
avatar
«Построитель» запросов есть, но он находится уровнем ниже, чем представлено в ВП, его нельзя вызывать из шаблона. Интересный вопрос, но реально нужна ли эта функция? Чую что в ЛС2 архитектурные проблемы могут возникнуть для реализации такой функциональности
avatar
… но реально нужна ли эта функция...

Конкретно мне и сейчас уже нет, т.к. сейчас смогу сделать это плагином, а вот пару лет назад… :) Полезна будет тому, кто с плагинами не работает, новичкам опять же.
avatar
можете подсказать как правильно в плагине запилить экшен для пользователя. Изучал-ковырял дефолтный плагин, который в коробке ЛС2 идёт — Статьи. В нём есть экшен Админа, он использует для обработки поступающих данных Ajax. Как сделать копию обработчика для пользователя? ( Саму форму вывожу )
avatar
Не, не на столько я программист. :)
avatar
Я понял. Получается выборка топиков формируется еще по дате, и даже если вывести раздельно по типам, то одна колонка может остаться пустой или будет не полной. Тогда придется вывод типов топиков выносить в отдельные методы, в плагине. Я в принципе планировал делать плагин и выводить топики по типом в отдельных экшенах.
avatar
Чисто на смарти не выйдет сделать, в шаблон передаются данные из класса, а в классе прописана выдача всех активных топиков, вне зависимости от типа.

Вижу такой вариант:
avatar
(чёрт, долбанный Etner+Ctrl)
Чтобы вывести в шаблоне в разные места топики разных типов нужно:
а) Впринципе можно в шаблоне средствами смарти сделать вывод в блок 1 и блок 2 разных типов топиков используя {if $type->getCode() == 'topic'}. Но! Придётся прогонять цикл 2 раза и переменные, нужные для пагинации придется модифицировать вручную.

б) Второй вариант требует приличного вмешательства в код.
1) В классе топика необходимо создать 2 функции (копипаст с функции GetTopicsTop), которые отдают нужные типы топиков. и 2 функции, которые подсчитывают количество топиков, если нужна пагинация
2) в нужном экшене (ActionIndex.class.php как понял этот вам нужен) добавить передачу ещё одной переменной в шаблон с типом топика Б. При этом первую переменную нужно будет тоже модифицировать, т.к. в ней передаются все топики, а нужно передавать топики А. (с пагинацией тоже самое)
3) в шаблоне убрать старую переменную, которая показывала все топики и добавить вывод своих двух переменных, в которых типы топика А и Б ( с пагинацией тоже самое)
avatar
Спасибо, за совет. Пагинация пока не нужна, ленты нужны только на главной, и каждый тип топикабудет на своей странице.
Я уже сделал примерный шаблон главной. Там сделал два компоннета под разные типы топиков и под них свои шаблоны топиков внутри, чтобы разделить на ленты. Добавил копипастом вывод топиков внутри компонетов, так что сейчас выводятся две одинаковые ленты).
Теперь осталось вынести шаблон в плагин и там создать несколько экшенов.
Получается Орт верно написал, если метод выводит последние 40 топиков новостей, то смарти уже не откуда взять топики для второй ленты фотографий к примеру.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.