В сайдбаре сайдбара стоит заголовок "популярное". Я решил сделать там просто случайные посты.
Нам нужно выбрать 5 материалов.
Сайдбар располагается также во всех шаблонах, значит, использовать будем BaseController
Давайте добавим в метод globalElements
ещё одну переменную и получим в неё посты:
$result = $this->evo->runSnippet('DocLister', [
'parents' => 2,
'depth' => 1,
'tvPrefix' => '',
'tvList' => 'post_mainphoto',
'total' => 5,
'orderBy' => 'RAND()',
'returnDLObject' => 1,
]);
$this->data['posts_sidebar'] = $result->getDocs();
Использован параметр Доклистера 'orderBy' => 'RAND()'
который представляет собой строку для сортировки материала. Кстати, сюда подойдёт любая строка,удовлетворяющая правилам построения параметра ORDER BY в SQL запросе.
Посты в сайдбаре расположены в файле views/parts/sidebar.blade.php
. Откройте его и найдите <ul class="posts">
.
Вызываем знакомый нам цикл foreach:
<ul class="posts">
@foreach ($posts_sidebar as $post)
<li>
<article>
<header>
<h3>
<a href="{{ urlProcessor::makeUrl($post['id'] ) }}"
>{{ $post['pagetitle'] }}</a
>
</h3>
<time class="published">{{ date('d.m.Y',$post['createdon']) }}</time>
</header>
<a href="{{ urlProcessor::makeUrl($post['id']) }}" class="image"
><img src="{{ $post['post_mainphoto'] }}" alt=""
/></a>
</article>
</li>
@endforeach
</ul>
Особых изменений нет, разве что мы взяли поле createdon
и сделали из него читаемую дату.
Обновите страницу несколько раз, посты должны изменяться.
- Мы узнали о навых параметрах Доклистера
- На сайте работает админка, посты, пост, сайдбар, обе менюшки.
Настала пора добавить то, без чего не бывает блога - теги для постов.