Выделение последних опубликованных ресурсов
Есть страница с новостями. Каким способом можно выделить три последние новости? К примеру, на симплдрим некоторые компоненты помечаются иконкой «hot». Вот что-то вроде этого, только чтобы автоматически, в зависимости от
[[+publishedon]]
Комментарии: 8
Ну publishedon это дата. Наверное стоит написать отдельный сниппет для этой задачи. Как? Я не знаю =), но если полазить по поисковой выдаче modx.pro, то можно найти куски кода и соорудить небывалый LEGO сниппет!
Я так обычно делаю =)
Я так обычно делаю =)
Ладно-ладно, я не оставлю тебя без подсказки.
Вот один из моих старых сниппетов.
Примеры вызова:
или
Вот один из моих старых сниппетов.
<?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]]`]]
Что мешает просто воспользоваться параметром &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).
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).
Может я что-то не понимаю, но что мешает сделать:
[[getResources? &sortby=`{"publishedon":"DESC"}` &limit=`3`]]
Это если нужно вывести 3 последних новости.[[getResources? &sortby=`{"publishedon":"DESC"}` &offset=`3`]]
Это если нужно продолжить. Параметр tpl у этих сниппетов может быть разный.
2 вызова = минимум 2 запроса к базе. Не оптимизированный вариант.
Мне кажется, это вы уже придираетесь. Если бы речь шла о 1000 или хотя бы 10 операциях — целесообразно было бы говорить об оптимизации, но когда речь идет о разовом выводе, да еще и таким простым сниппетом, не думаю, что скорость будет сильно страдать. Зато все сделано типовыми средствами и без программирования (думаю, это важный момент для автора, раз уж он путает [[+publishedon]] и [[*publishedon]]).
либо не путает и пишет про чанк :)
*пожал плечами* я не отрицаю допустимость вашего варианта, но именно из-за такого подхода некоторые программисты и вешают на modx ярлык «тормозной».
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.