Выделение последних опубликованных ресурсов

Есть страница с новостями. Каким способом можно выделить три последние новости? К примеру, на симплдрим некоторые компоненты помечаются иконкой «hot». Вот что-то вроде этого, только чтобы автоматически, в зависимости от
[[+publishedon]]
Николаевич
12 января 2015, 13:18
modx.pro
874
0

Комментарии: 8

Павел Левин
12 января 2015, 23:37
0
Ну publishedon это дата. Наверное стоит написать отдельный сниппет для этой задачи. Как? Я не знаю =), но если полазить по поисковой выдаче modx.pro, то можно найти куски кода и соорудить небывалый LEGO сниппет!

Я так обычно делаю =)
    Павел Левин
    12 января 2015, 23:44
    0
    Ладно-ладно, я не оставлю тебя без подсказки.

    Вот один из моих старых сниппетов.

    <?php
    $pubTime = strtotime("-1 day");
    $pubTimeEnd = strtotime("+1 day");
    $ids = $modx->getChildIds($input);
    $count = 0;
    $ecount = 0;
    $value = 0;
    $class = '';
    
    /*новое*/
    if (!empty($ids)) {//проверяем дочерние ресурсы
        $count = $modx->getCount('modResource', array(
    		'id:IN' => $ids
    		,'isfolder' => 0
            ,'deleted' => 0
            //,'editedon' => 0
            ,'publishedon:>' => $pubTime
            ,'publishedon:<=' => $pubTimeEnd
    	));
        $class .= ' new';
    } else {//проверяем текущий ресурс
        $ids = array($input);
        $count = $modx->getCount('modResource', array(
        	'id:IN' => $ids
    		,'isfolder' => 0
            ,'deleted' => 0
            //,'editedon' => 0
            ,'publishedon:>' => $pubTime
            ,'publishedon:<=' => $pubTimeEnd
    	));
        $value = 'new';//текст выделения
        $class .= ' new';//класс выделения
    }
    if($count) {
        return '<span class="last-update '.$class.'">'.($value?$value:$count).'</span>';
    } else {
        return ' ';
    }

    Примеры вызова:
    [[+id:LastUpdate]]

    или
    [[!LastUpdate? &input=`[[+id]]`]]
    Максим Кузнецов
    13 января 2015, 01:39
    0
    Что мешает просто воспользоваться параметром &tpl_n и визуально стилизовать чанки так, как вам нужно?

    docs.modx.pro/components/pdotools/general-settings

    По иконкам hot это, скорее всего, уже if условие внутри новостей, который оценивает параметр количества комментариев, и если он больше определенного значения — выводит иконку. Легко реализуется с помощью фильтров вывода — rtfm.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-(output-modifiers).
      Константин
      13 января 2015, 12:17
      0
      Может я что-то не понимаю, но что мешает сделать:

      [[getResources? &sortby=`{"publishedon":"DESC"}` &limit=`3`]]
      Это если нужно вывести 3 последних новости.

      [[getResources? &sortby=`{"publishedon":"DESC"}` &offset=`3`]]
      Это если нужно продолжить. Параметр tpl у этих сниппетов может быть разный.
        Максим Кузнецов
        13 января 2015, 13:15
        0
        2 вызова = минимум 2 запроса к базе. Не оптимизированный вариант.
          Константин
          13 января 2015, 13:48
          0
          Мне кажется, это вы уже придираетесь. Если бы речь шла о 1000 или хотя бы 10 операциях — целесообразно было бы говорить об оптимизации, но когда речь идет о разовом выводе, да еще и таким простым сниппетом, не думаю, что скорость будет сильно страдать. Зато все сделано типовыми средствами и без программирования (думаю, это важный момент для автора, раз уж он путает [[+publishedon]] и [[*publishedon]]).

            Константин
            13 января 2015, 13:50
            0
            либо не путает и пишет про чанк :)
              Максим Кузнецов
              13 января 2015, 13:53
              0
              *пожал плечами* я не отрицаю допустимость вашего варианта, но именно из-за такого подхода некоторые программисты и вешают на modx ярлык «тормозной».
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8