pdoCrumbs
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn moreСниппет для построения навигации в стиле хлебных крошек.
Хорошая замена BreadCrumb. Работает с документами из любых контекстов и даёт много опций выбора ресурсов.
Сниппет очень быстрый, потому что за один запрос выбирает только указанные элементы из БД.
Свойства¶
Принимает все свойства pdoTools и некоторые свои:
| Property | Default | Description |
|---|---|---|
| &showLog | 0 | Показывает дополнительную информацию о работе сниппета. Только для пользователей, авторизованных в контексте «mgr». |
| &from | 0 | Id ресурса, с которого начинать строить крошки. Обычно корень сайта «0». |
| &to | Id ресурса, на котором заканчивать крошки. По умолчанию id текущей страницы. | |
| &exclude | Список id ресурсов через запятую, которые нужно исключить из вывода. | |
| &toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с тем же именем вместо вывода на экран. | |
| &outputSeparator | → |
Символ-разделитель между крошками. |
| &tpl | Имя чанка для форматирования вывода. Если не указано, на экран выводятся поля ресурса. | |
| &tplCurrent | Чанк для форматирования крошки текущего ресурса в навигации. | |
| &tplMax | Чанк, добавляемый в конец результатов, если крошек больше &limit. | |
| &tplHome | Чанк для ссылки на главную страницу. | |
| &tplWrapper | Чанк-обёртка для всех результатов. Один плейсхолдер: [[+output]]. Не работает вместе с &toSeparatePlaceholders. |
|
| &wrapIfEmpty | Выводить обёртку &tplWrapper, даже если результатов нет. | |
| &showCurrent | 1 | Показывать текущий документ в навигации. |
| &showHome | 0 | Показывать крошку для главной страницы. |
| &showAtHome | 1 | Показывать крошки на главной странице. |
| &hideSingle | 0 | Не показывать результат, если крошка только одна. |
| &direction | ltr | Направление навигации: слева направо «ltr» или справа налево «rtl», например для арабского. |
Свойства шаблонов¶
| Template | Default |
|---|---|
| &tpl | @INLINE <a href="[[+link]]">[[+menutitle]]</a> |
| &tplCurrent | @INLINE <span>[[+menutitle]]</span> |
| &tplMax | @INLINE <span> ... </span> |
| &tplHome | |
| &tplWrapper | @INLINE <div class="breadcrumbs">[[+output]]</div> |
Примеры¶
Генерация хлебных крошек для текущей страницы:
[[pdoCrumbs]]
Генерация ограниченного числа элементов:
[[pdoCrumbs?
&limit=`2`
]]
Сниппет хорошо работает при вызове из pdoResources. Например, чанк:
<h3>[[+pagetitle]]</h3>
<p>[[+introtext]]</p>
[[pdoCrumbs?
&to=`[[+id]]`
&showCurrent=`0`
]]
Генерация заголовков страниц¶
pdoCrumbs можно вызывать внутри другого сниппета, например для генерации тега header страниц.
Сниппет Title:
<?php
// We define variables
if (empty($separator)) {$separator = ' / ';}
if (empty($titlefield)) {$titlefield = 'longtitle';}
if (empty($parents_limit)) {$parents_limit = 3;}
if (empty($tplPages)) {$tplPages = 'No. [[+page]] of [[+pageCount]]';}
// Key and cache settings
$cacheKey = $modx->resource->getCacheKey() . '/title_' . sha1(serialize($_REQUEST));
$cacheOptions = array('cache_key' => 'resource');
if (!$title = $modx->cacheManager->get($cacheKey, $cacheOptions)) {
// We learn the name of the page
$title = !empty($modx->resource->$titlefield)
? $modx->resource->$titlefield
: $modx->resource->pagetitle;
// Add a search query, if there is one
if (!empty($_GET['query']) && strlen($_GET['query']) > 2) {
// We need to use a placeholder to avoid
$title .= ' «[[+mse2_query]]»';
}
// Adding pagination if indicated
if (!empty($_GET['page'])) {
$title .= $separator . str_replace('[[+page]]', intval($_GET['page']), $tplPages);
}
// Adding parents
$crumbs = $modx->runSnippet('pdoCrumbs', array(
'to' => $modx->resource->id,
'limit' => $parents_limit,
'outputSeparator' => $separator,
'showHome' => 0,
'showAtHome' => 0,
'showCurrent' => 0,
'direction' => 'rtl',
'tpl' => '@INLINE [[+menutitle]]',
'tplCurrent' => '@INLINE [[+menutitle]]',
'tplWrapper' => '@INLINE [[+output]]',
'tplMax' => ''
));
if (!empty($crumbs)) {
$title = $title . $separator . $crumbs;
}
// By caching the results
$modx->cacheManager->set($cacheKey, $title, 0, $cacheOptions);
}
// return title
return $title;
Вызов сниппета на странице
<title>[[Title]] / [[++site_name]] - my best website in the world</title>
Демо¶
Рабочий пример [генерации крошек в результатах поиска] 3 mSearch2.
Также сайт bezumkin.ru использует динамические title.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn more











