Примеры

    Простой пример без пагинации

    [!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_content

    В данном примере информация будет выводиться из таблицы 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>