Этот урок будет самым легким из всей нашей серии. Использовать мы будем только сниппеты из комплекта pdoTools. Конечно, еще нам нужно создать с вами TV-параметр с картинкой для наших новостей.
Приступим! Так как чанк вывода у нас будет один и тот же для главной страницы и страницы с новостями, то давайте его сразу создадим news.tpl:
<div class="col-md-4">
<div class="post eqh">
<a href="{$id | url}">
<img src="{if $_pls["tv.image"]?}{$_pls["tv.image"] | phpthumbon:'w=200&h=180&zc=1&q=99'}{else}{$_modx->getPlaceholder('+noimage') | phpthumbon:'w=200&h=180&zc=1&q=99'}{/if}" alt="{$pagetitle | htmlent}">
</a>
<span>{$publishedon | date_format : '%d.%m.%Y'}</span>
<p><a href="{$id | url}">{$pagetitle}</a></p>
</div>
</div>
И сделаем вывод в шаблоне новостей:
<div class="posts" id="pdopage">
<div class="row rows">
{$_modx->runSnippet('!pdoPage', [
'tpl' => '@FILE chunks/news.tpl',
'parents' => $_modx->resource.id,
'limit' => '9',
'includeTVs' => 'image',
'processTVs' => 1,
'ajaxMode' => 'button',
'ajaxTplMore' => '@INLINE <button class="btn btn-blue btn-block btn-more">Загрузить еще</button>',
])}
</div>
<div class="pageination">
{$_modx->getPlaceholder('page.nav')}
</div>
</div>
Шаблон новости получился следующий:
{extends 'file:templates/index.tpl'}
{block 'content'}
{include 'file:chunks/breadcrumbs.tpl'}
<!-- CONTENT -->
<section class="def-section content">
<div class="container">
<h1>{$_modx->resource.longtitle ?: $_modx->resource.pagetitle}</h1>
<div class="blog-post">
<div class="post-thumb">
<img src="{$_modx->resource.image}" alt="{$_modx->resource.pagetitle | htmlent}">
</div>
<div class="post-content content">
<div class="meta">
<span class="meta-part"><i class="fa fa-calendar"></i> {$_modx->resource.publishedon | date_format : '%d.%m.%Y'}</span>
</div>
{$_modx->resource.content}
</div>
</div>
</div>
</section>
<!-- / CONTENT -->
{/block}
Вывод на главной странице будет такой:
{$_modx->runSnippet('!pdoResources', [
'tpl' => '@FILE chunks/news.tpl',
'parents' => 7,
'limit' => 3,
'includeTVs' => 'image',
'processTVs' => 1
])}
Отличная работа! Этот урок стал для нас небольшой передышкой. Хочу вам сказать, что мы практически на финишной прямой.