Как исключить первые посты из виджета 2.X

 
Посетитель
small user social cms
Медаль
Сообщений: 118
Добрый день, подскажите как при добавлении виджета "Список контента" исключить из вывода заданное число первых постов? В настройках виджета что-то такого не увидел look
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2661
greshnik:
как при добавлении виджета "Список контента" исключить из вывода заданное число первых постов?
Можно сделать так:
1. В нужном типе контента создаете набор с системным именем, например, cutted. С сортировкой по дате по убыванию.
2. B phpmyadmin находите ваш новый набор и исправляете или добавляете индекс dataset_cutted.
Спойлер
3. В своем виджете в опциях выставляете применить фильтры из набора - выбираете ваш новый набор.
4. В \system\controllers\content\hooks добавляете новый хук content_list_filter такого содержания:
Спойлер
5. Дописываете content_list_filter в файле \system\controllers\content\manifest.php
6. В панели управления Компоненты - Управление событиями - Обновить события.
Всё. Должно обрезать три первых материала. Если нужно другое количество - исправить в хуке.
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
Если количество постов пропуска не ток много, то есть более топорный способ:
в админке настроить вывод на X постов больше, а в css виджета прописать
nth-child(-n+ X) {
display: none;
}
Редактировалось: 2 раз (Последний: 14 ноября 2017 в 12:32)
Посетитель
small user social cms
Медаль
Сообщений: 118
Интересно почему этого нет в самой CMS? По моему это обычная практика для размещения для тех же новостей на главной
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 3419
Ris, молодец! Но есть одно но...greshnik смотрите естли вы задаете такой вопрос то говорите и зачем, есть масса возможностей штатно сделать это. Как говорит ув. letsgo!
Редактировалось: 1 раз (Последний: 14 ноября 2017 в 18:16)
Дизайн для Инстант = Я зарабатываю тут =
= Уроки для Конструктора тем =
Посетитель
small user social cms
Медаль
Сообщений: 118
Ris, после всех манипуляций в виджете все заработало, но когда открываешь категорию задействованную в наборе, вываливается такое:
Спойлер
Что я не так сделал, не подскажешь?
Редактировалось: 2 раз (Последний: 14 ноября 2017 в 18:49)
Посетитель
small user social cms
Медаль
Сообщений: 118
Алексей Тимофеев, допустим я на главной вывожу последние 3 записи из раздела "Новости" в виджете вверху сайта, потом ниже на этой же странице я хочу сделать ленту новостей из раздела "Новости", но уже без первых трех, которые я уже выводил. Те грубо говоря, зачем чтоб условно три первые записи дублировались и там и там
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2661
greshnik,
Да, что-то с категориями не проверил.
Ну сейчас посмотрю в чем дело...
=====================================
Надо изменить содержание хука на такое:
Спойлер
А в phpmyadmin выполнить
Код SQL:
  1. ALTER TABLE cms_con_articles ADD INDEX dataset_cutted (date_pub)
Редактировалось: 1 раз (Последний: 14 ноября 2017 в 20:56)
Посетитель
small user social cms
Медаль
Сообщений: 118
Ris, спасибо, вроде то что надо
Посетитель
small user social cms
Медаль
Сообщений: 118
Ris, подскажите, пожалуйста, делаю второй виджет по аналогии, только везде меняю cutted на cutted2, но срабатывает только первый хук, где я косячу?
вот мой хук:
Спойлер
в manifest.php content_list_filter2 дописал, в БД на dataset_cutted поменял

И еще вопрос, почему я ставлю $model->filterLt('id', $max - 2);, а обрезает 3 записи? ну понятно что я -2 оставил, интересно просто почему))
Редактировалось: 5 раз (Последний: 15 ноября 2017 в 21:20)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2661
В первом хуке есть такая строка:
strpos($model->index_action, 'cutted')
Так вот это означает "если в модели есть индекс, в котором есть слово cutted.
И в cutted2 это слово тоже есть!
Назовите как-нибудь по-другому. smile
Посетитель
small user social cms
Медаль
Сообщений: 118
Ris, взгляните, пожалуйста, Вашим опытным глазом, что не так?

1. В нужном типе контента создал набор с системным именем pruning. С сортировкой по дате по убыванию.
2. B phpmyadmin в новом наборе исправил индекс на dataset_pruning.
3. В виджете поставил применить фильтр из набора - выбрал этот набор.
4. Добавил новый хук content_list_pruning такого содержания:
Спойлер
5. В phpmyadmin выполнил ALTER TABLE cms_con_articles ADD INDEX dataset_pruning (date_pub)
6. Добавил content_list_pruning в файл \system\controllers\content\manifest.php
7. В панели управления Компоненты - Управление событиями - Обновил события.

Сделал так для второй обрезки, вроде все верно, но почему-то не работает?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
Зачем так все усложнять? Хуки, наборы, индексы shock

Надо пропустить 3 новости и все!?

Задача решается двумя строчками в шаблоне виджета.
В list_basic.tpl.php в начале добавляем счетчик и проверку с декрементом.
Код PHP:
  1. <?php if ($items){ $backcounter=3; ?>
  2.  
  3. <div class="widget_content_list">
  4. <?php foreach($items as $item) { if ($backcounter-- >0) continue;
Всё!
Редактировалось: 1 раз (Последний: 29 ноября 2017 в 03:04)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2661
greshnik,
Сколько Вы уже таких хуков сделали для разных виджетов?
Сведите их все в один. То есть
if (strpos($model->index_action, 'pruning') || strpos($model->index_action, 'cutted')) и т.д.
Чтобы при любом из нужных индексов срабатывало.
Или сделайте, как Sonat советует. Это проще и надежнее.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
Ris:
Или сделайте, как Sonat советует. Это проще и надежнее.
Кстати, можно править не сам list_basic.tpl.php, а создать его копию - list_basic-3.tpl.php, и править ее.
Выбирать ее в редакторе в тех местах где пропуск нужен, а где не нужен ставить родной smile
Спойлер
Если надо в другом месте пропускать 5, без проблем создадим и выберем шаблон list_basic-5.tpl.php
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: