Два вопроса по выводу списка контента

InstantCMS 2.X
#1 14 июня 2022 в 13:52

1. На главной странице нужно чтобы новости в левой колонке выводились с 1 по 3-ю, а в правой с 4-й по 8-ю. Как реализовать?

Изображение

2. К новости с помощью связей привязаны 4 статьи с полем Год выхода. Как сделать, чтобы статьи автоматически сортировались по году выхода?

Изображение

Говорят, что обе задачи решаются с помощью наборов, но я прочитал описание наборов, но решения так и не нашел. Кто подскажет?

#2 14 июня 2022 в 15:11

1. На главной странице нужно чтобы новости в левой колонке выводились с 1 по 3-ю, а в правой с 4-й по 8-ю. Как реализовать?

Голдман Сакс

Тут можно вывести два виджета с разными файлами шаблона. И в файлах уже прописать условия.

2. К новости с помощью связей привязаны 4 статьи с полем Год выхода. Как сделать, чтобы статьи автоматически сортировались по году выхода?

Голдман Сакс

При создании связи указать(если нет предварительно создать) набор в ТК Статьи, в котором и прописать нужное условие.

#3 14 июня 2022 в 15:48

Тут можно вывести два виджета с разными файлами шаблона. И в файлах уже прописать условия.

Lora

Так и сделано, но не вижу где можно вывести подобные условия.

При создании связи указать(если нет предварительно создать) набор в ТК Статьи, в котором и прописать нужное условие.

Lora

А вот это сработало и именно так, как надо. Огромное спасибо! Особенно, потому что эта проблема была приоритетной.

Сегодня в 20:32
#4 14 июня 2022 в 16:21

Так и сделано, но не вижу где можно вывести подобные условия

Голдман Сакс

На примере шаюлона list.tpl.php

Перед

  1. <?php foreach($items as $item) { ?>

пишем

  1. <?php $i = 0; ?>

После

  1. <?php foreach($items as $item) { ?>
  1. <?php if($i>=2)continue; ?> // В левой колонке
  2. <?php if($i<=2)continue; ?> // В правой колонке
  3.  

Ну и перед закрывающей скобкой для foreach

  1. <?php $i++; } ?>
Добавлено спустя 6 минут

Хотя по феншую, конечно нужно бы всё это сделать в widget.php. Получать название шаблона и в зависимости от этого делать соответствующий запрос в базу.

Добавлено спустя 9 минут

Например так.system\controllers\content\widgets\list\widget.php. Стр 176

  1. $items = $model->
  2. limit($limit)->
  3. getContentItems($ctype['name']);
  4. if (!$items) {
  5. return false;
  6. }

Перед ней получаем название шаблона.

  1. $tpl = $this->getTemplate();

И затем пишем

  1. $limit = ($tpl=='тут название левого шаблона') ? '0,3' : '3,7';
Добавлено спустя 2 минуты

Единственное не помню сработает ли это для функции limit(), может нужно будет limitPage() использовать.

#5 14 июня 2022 в 16:37

Спасибо, буду разбираться.

#6 19 июня 2022 в 08:13

К чему такие сложности если это один тип контента? Проще сделать один виджет с подобным шаблоном из двух колонок. Легко решается с помощью GRID.  Я же правильно понимаю что вам нужен только стиль такой, или какие то другие цели. Хотя возможно я ошибаюсь и для кого то это и сложнее
Ссылка чисто для примера, там нужно использовать псевдоэлементы только 
grid.layoutit.com/?id=xl7u3h5

#7 19 июня 2022 в 09:25

К чему такие сложности если это один тип контента

Clear

Согласен. К сожалению не знал о таком правиле css. Спасибо).

#8 19 июня 2022 в 21:31

Лучше, когда в движке есть разные способы решения задачи.

Например, в слайдере три последних новости, а ниже список новостей начиная с четвертой новости.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.