[!DocLister?
&display=`20`
&summary=`notags,len:200`
&dateSource=`pub_date`
&parents=`5`
&tvList=`img,tag`
&id=`lastnews`
&tpl=`ListSummaryPost`!]
Вибірка останніх 20 документів батьком яких є документ з ID=5.
Текст кожного документа буде схильний до додаткової обробки класом summary з попереднім видаленням html тегів і урізанням довжини тексту до 200 +/- 50 символів. При цьому в чанка будуть доступні плейсхолдери tv.img і tv.tag зі значенням TV параметрів img і tag.
Для наочності чанк ListSummaryPost
<div class="post">
<div class="date">[+createdon+]</div>
<h3><a href="/[~[+id+]~]">[+pagetitle+]</a> </h3>
<div class="tag"><span>Теги: </span> [+tv.tag+] </div>
<div class="content">
<a href="/[~[+id+]~]" title="[+pagetitle+]"><img src="[+tv.img+]" /></a>
<p>[+summary+]...</p>
<a href="/[~[+id+]~]" title="Подробнее">Подробнее</a>
</div>
</div>
[!DocLister? &config=`test`!]
Після чого створюємо JSON файл test.json в папці сніпета /config/custom/ з таким вмістом:
{
"display" : "20",
"summary" : "notags,len",
"dateSource" : "pub_date",
"parents" : "5",
"tvList" : "img,tag",
"id" : "lastnews",
"tpl" : "ListSummaryPost"
}
Результат роботи цього виклику буде ідентичний попередньому прикладу.
[!DocLister? &tpl=`example` &customLang=`news`!]
Після чого створюємо php файл news.php з $_lang масивом в підпапці сніпета /lang/
<?php if (!defined('MODX_BASE_PATH')) { die('What are you doing? Get out of here!');}
$_lang = array();
$_lang['newsTitle'] = 'Останні новини';
return $_lang;
Тепер в чанку example можно використовувати тег [%newsTitle%] і він автоматично буде замінений на повідомлення "Останні новини".
[!DocLister?
&display=`4`
&depth=`2`
&tpl=`ListSummaryPost`
&summary=`notags,len:500`
&dateFormat=`%d.%m.%Y в %H:%M`
&dateSource=`pub_date`
&parents=`2`
&tvList=`img,tag`
&renderTV=`img`
&id=`list`
&showParent=`0`
&addWhereList=`c.template IN (6,7)`
&sortBy=`menuindex`
&paginate=`pages`
&TplNextP=``
&TplPrevP=``
&TplPage=`@CODE: <li><a href="[+link+]">[+num+]</a></li>`
&TplCurrentPage=`@CODE: <li class="active"><a href="[+link+]">[+num+]</a></li>`
&TplWrapPaginate=`@CODE: <div class="pagination"><ul>[+wrap+]</ul></div>`
!]
[+list.pages+]
В даному випадку відбувається вибірка всіх документів з контейнера з ID = 2 з глибиною 2 і шаблонами 6 або 7. Після чого будуть відфільтровані документи контейнери (ті документи всередині яких проводився пошук. А саме - документ з ID = 2 і все його дочірні елементи які є контейнерами).
При виведенні буде підготовлена пагінація типу page і перевизначаються шаблони для елементів пагінації на ті, що вказані в параметрах TplWrapPaginate, TplCurrentPage і TplPage. Шаблони для посилань наступна і попередня будуть порожніми (відповідно текст в цих елементах не була виводитимуться). До всіх плейсхолдерів сніпета DocLister додасться префікс list, а до кожного документ бере участь у видачі додадуться значення TV параметрів img і tag в плейсхолдери tv.img і tv.tag відповідно.
TV параметр img буде отрендеріть відповідно до віджетом, зазначеним при створенні цього TV параметра. Всього на сторінці буде відображено по 4 документа. При цьому сортування буде проведена не за датою створення, а по menuindex (позиції в меню). Як джерело дати братиметься дата публікації документа.
Для наочності чанк ListSummaryPost
<div class="post">
<div class="date">[+createdon+]</div>
<h3><a href="/[~[+id+]~]">[+pagetitle+]</a> </h3>
<div class="tag"><span>Теги: </span> [+tv.tag+] </div>
<div class="content">
<a href="/[~[+id+]~]" title="[+pagetitle+]">[+tv.img+]</a>
<p>[+summary+]...</p>
<a href="/[~[+id+]~]" title="Подробнее">Подробнее</a>
</div>
</div>
В даному прикладі інформація буде виводитися з таблиці site_snippets. Як колонки PrimaryKey виступає поле id. Сортування відбувається по зростанню значень в колонці name.
[!DocLister?
&controller=`onetable`
&idType=`documents`
&table=`site_snippets`
&display=`10`
&ignoreEmpty=`1`
&sortBy=`name`
&sortDir=`ASC`
&tpl=`row_tpl`
&showParent=`0`
&idField=`id`
!]
Чанк row_tpl
<div class="row"><div class="span12">
<h3 class="pagination-centered">[+name+]</h3>
<code>[+snippet+]</code><br />
<table class="table table-striped table-bordered">
<thead>
<tr>
<td><strong>Поле</strong></td>
<td><strong>Значение</strong></td>
</tr>
</thead>
<tbody>
<tr><td>id</td><td>[+id+]</td></tr>
<tr><td>name</td><td>[+name+]</td></tr>
<tr><td>description</td><td>[+description+]</td></tr>
<tr><td>editor_type</td><td>[+editor_type+]</td></tr>
<tr><td>category</td><td>[+category+]</td></tr>
<tr><td>cache_type</td><td>[+cache_type+]</td></tr>
<tr><td>locked</td><td>[+locked+]</td></tr>
<tr><td>properties</td><td>[+properties+]</td></tr>
<tr><td>moduleguid</td><td>[+moduleguid+]</td></tr>
</tbody>
</table>
</div>
</div>