DLPrevNext

Описание сниппета

Предназначен для вывода ссылок на соседние документы с форматированием вида выводимых ссылок. Для работы необходим установленный Doc Lister.

Установка

  1. Создайте новый сниппет с именем DLPrevNext и вставьте в него код ниже:
    
    <?php
    if (! defined('MODX_BASE_PATH')) {
    die('HACK???');
    }

$ID = $modx->documentObject['id']; $params = is_array($modx->Event->params) ? $modx->Event->params : array(); $params = array_merge($params, array( 'api' => 1, 'debug' => '0' ));

$json = $modx->runSnippet("DocLister", $params); $children = jsonHelper::jsonDecode($json, array('assoc' => true)); $children = is_array($children) ? $children : array(); $self = $prev = $next = null; foreach ($children as $key => $data) { if (! empty($self)) { $next = $key; break; } if ($key == $ID) { $self = $key; if (empty($prev)) { $prev = end($children); $prev = $prev['id']; } } else { $prev = $key; } } if (empty($next)) { reset($children); $next = current($children); $next = $next['id']; } if ($next == $prev) { $next = ''; }

$TPL = DLTemplate::getInstance($modx); return ($prev == $ID) ? '' : $TPL->parseChunk($prevnextTPL, array( 'prev' => empty($prev) ? '' : $TPL->parseChunk($prevTPL, $children[$prev]), 'next' => empty($next) ? '' : $TPL->parseChunk($nextTPL, $children[$next]), )); ?>

## Параметры и примеры использования
В нужном месте шаблона вставьте вызов сниппета, параметры вызова аналогичные [параметрам](http://docs.evo.im/04_extras/doclister/parameters.html) **Doclister**.

**&prevnextTPL** — имя чанка или код (через @CODE:) вывода ссылок на соседедние документы, содержмт 2 плейсхолдера **[+prev+]** и **[+next+]**

**&prevTPL** — имя чанка или код (через @CODE:) в котором задается внешний вид плейсхолдера **[+prev+]**

**&nextTPL** — имя чанка или код (через @CODE:) в котором задается внешний вид плейсхолдера **[+next+]**

Чтобы не создавать лишних чанков, можно использовать структуру ``` &nextTPL=`@CODE: ваш_html` ```

#### Простейший вызов

[[DLPrevNext? &idType=parents &prevnextTPL=@CODE: [+prev+] | [+next+] &prevTPL=@CODE: <a href="[+url+]">&larr; [+title+]</a> &nextTPL=@CODE: <a href="[+url+]">[+title+] &rarr;</a>]]

#### Вызов с учетом родительской папки (удобно для вывода соседних документов в каталогах)

[[DLPrevNext? &idType=parents &parents=[*parent*] &prevnextTPL=@CODE: [+prev+] | [+next+] &prevTPL=@CODE: <a href="[+url+]">&larr; [+title+]</a> &nextTPL=@CODE: <a href="[+url+]">[+title+] &rarr;</a>]]

Mem: 3.75 mb, MySQL: 0.0023 s, 2 req., PHP: 0.0297 s, all: 0.0320 s, cache.