Шаблон MAGAZINE вы можете скачать по ссылке.
Этот урок будет самым легким из всей нашей серии. Использовать мы будем только сниппеты из комплекта 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 ])}
Отличная работа! Этот урок стал для нас небольшой передышкой. Хочу вам сказать, что мы практически на финишной прямой.