Last active
June 9, 2016 17:43
-
-
Save pafnuty/6f56984c048704b62b04 to your computer and use it in GitHub Desktop.
Пример вывода новостей с группировкой по дням через модуль BlockPro 4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{* Пример вывода новостей с группировкой по дням *} | |
{* Определяем пустой массив для сгруппированных новостей *} | |
{set $groupList = []} | |
{* | |
Пробегаем по существующему массиву с новостями и | |
собираем новый массив, группируя его по нужному параметру | |
*} | |
{foreach $list as $key=>$item} | |
{* Для начала определим параметр группировки *} | |
{* | |
В даном случаи это дата новости в формате [год][номер месяца][число месяца], | |
это будет ключ будущего нового массива, | |
таким образом новости сгруппируются по дням | |
*} | |
{set $groupKey = $item.date|dateformat:'Ymd'} | |
{* Теперь определим название (заголовок) группы на основе даты*} | |
{* | |
Если приведение текущего unix времени к формату [год][номер месяца][число месяца] | |
равно дате новости — значит название группы будет "Сегодня" | |
*} | |
{if $groupKey == $.php.time()|date_format:"%Y%m%d"} {* https://goo.gl/QrL5N7 *} | |
{set $groupName = $lang.time_heute} | |
{* | |
Если приведение текущего unix времени к формату [год][номер месяца][число месяца], | |
за вычетом одного дня равно дате новости — значит название группы будет "Вчера" | |
*} | |
{elseif $groupKey == ($.php.time()-86400)|date_format:"%Y%m%d"} | |
{set $groupName = $lang.time_gestern} | |
{* В противном случае название группы будет равно дате в формате дд.мм.гггг *} | |
{else} | |
{set $groupName = $item.date|dateformat:'d.m.Y'} | |
{/if} | |
{* Теперь соберём элементы нового массива с новостями *} | |
{set $groupList[$groupKey]['name'] = $groupName} | |
{set $groupList[$groupKey]['news'][] = $item} | |
{/foreach} | |
{* Больше этот массив с новостями нам не нужен, удалим его из памяти *} | |
{unset $list} | |
{* Для проверки результата операции можно воспользоваться модификатором dump *} | |
{* <pre><code>{$groupList|dump}</code></pre> *} | |
{* Теперь можно пройтись по новому массиву новостей и вывести результаты *} | |
{foreach $groupList as $group} | |
{* Выводим название группы *} | |
<h2>{$group.name}</h2> | |
<hr> | |
{* Выводим новости группы *} | |
<div class="group-news"> | |
{* | |
Т.к. массив с новостями группы хранится в $group.news, | |
то и цикл будет именно по $group.news, а не по $group | |
*} | |
{foreach $group.news as $el} | |
{* Тут уже работаем как с обычной новостью *} | |
<div class="group-news-item"> | |
<h4>{$el.title}</h4> | |
<i>Опубликовано в: {$el.date|dateformat:'H:i'}</i> | |
<p>{$el.short_story|limit:'200'}</p> | |
</div> | |
{/foreach} | |
</div> | |
{/foreach} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment