pdoCrumbs запоминает только одну страницу в кеше
Приветствую!
В общем проблема следующая:
— Есть вызов Крошек:
А теперь немного МАГИИ.
Если зайти на страницу любого элемента и обновить кеш или сохранить любой ресурс в админке, то ВУОЛЯ «Раздел» появляется в навигации, НО только на том ресурсе на котором остановился наблюдатель… т.е. получается что то вроде этого:
Элемент раздела 1 — Наблюдатель тут, после обновления КЕШ или сохранении любого ресурса, получается так:
Главная > Раздел 1 > Элемент раздела 1
а в разделе 2 все по прежнему:
Главная > Элемент раздела 2
НО! Если наблюдатель находится в Элементе раздела 2, то будет так:
Главная > Раздел 2 > Элемент раздела 2
Главная > Элемент раздела 1
Вопрос, а зачему так?
П.С.
Что попробовал:
— Обычный вызов пдоКрумбс ничего не дает, все так же
— Заморозка/Разморозка URI ничего не дает
П.П.С.
Точнее даже не так. Симптомы проявляются на той странице, которую я перезагружаю первой, сразу после того, как сохраню любой ресурс или очищу кеш!
#UPD1
все, разобрался, пользовался этой заметкой для оптимизации
modx.pro/solutions/22267
и взял этот код:
В общем проблема следующая:
— Есть вызов Крошек:
{var $curenturl = $.get.tag ? '<span class="breadcrumbs__link" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<a class="g-link" href="{$link}" title="{$menutitle}" itemprop="item">
<span itemprop="name">{$menutitle}</span>
<meta itemprop="position" content="{$idx}">
</a>
</span>
<span class="breadcrumbs__link">'~$.get.tag~'</span>' : '<span class="breadcrumbs__link">{$menutitle}</span>'}
{$_modx->runSnippet('pdoCrumbs', [
'showAtHome' => 0,
'showHome' => 1,
'tplWrapper' => '@INLINE <div class="breadcrumbs" itemprop="http://schema.org/breadcrumb" itemscope="" itemtype="http://schema.org/BreadcrumbList">{$output}</div>',
'tpl' => '@INLINE <span class="breadcrumbs__link" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<a class="g-link" href="{$link}" title="{$menutitle}" itemprop="item">
<span itemprop="name">{$menutitle}</span>
<meta itemprop="position" content="{$idx}">
</a>
</span>',
'tplCurrent' => '@INLINE '~$curenturl,
])}
По какой то причине, Крошки строятся только от текущего документа до корня сайт (до главной), т.е.:- Должно быть так :
- Главная > Раздел > Элемент раздела
- А выводит так :
- Главная > Элемент раздела
А теперь немного МАГИИ.
Если зайти на страницу любого элемента и обновить кеш или сохранить любой ресурс в админке, то ВУОЛЯ «Раздел» появляется в навигации, НО только на том ресурсе на котором остановился наблюдатель… т.е. получается что то вроде этого:
Элемент раздела 1 — Наблюдатель тут, после обновления КЕШ или сохранении любого ресурса, получается так:
Главная > Раздел 1 > Элемент раздела 1
а в разделе 2 все по прежнему:
Главная > Элемент раздела 2
НО! Если наблюдатель находится в Элементе раздела 2, то будет так:
Главная > Раздел 2 > Элемент раздела 2
Главная > Элемент раздела 1
Вопрос, а зачему так?
П.С.
Что попробовал:
— Обычный вызов пдоКрумбс ничего не дает, все так же
— Заморозка/Разморозка URI ничего не дает
П.П.С.
Точнее даже не так. Симптомы проявляются на той странице, которую я перезагружаю первой, сразу после того, как сохраню любой ресурс или очищу кеш!
#UPD1
все, разобрался, пользовался этой заметкой для оптимизации
modx.pro/solutions/22267
и взял этот код:
if( ! empty( $modx->context->resourceMap ) ) {
$options = [ xPDO::OPT_CACHE_KEY => 'context_settings/' . $modx->context->key ];
if( $val = $modx->getCacheManager()->get( 'context', $options ) ) {
$val[ 'resourceMap' ] = [];
$modx->getCacheManager()->set( 'context', $val, 0, $options );
}
}
Собственно этот плагин и мешал крошкам! Комментарии: 7
и да… гребаная квантовая физика… но такие дела
Час назад использовал этот сниппет и все норм, строит крошки включая все разделы и подразделы.
Проверьте, опубликованы ли ваши ресурсы? Будучи авторизованным в контексте mgr вы будете их видеть как пользователь, но хлебные крошки не будут строится для неопубликованных.
Проверьте, опубликованы ли ваши ресурсы? Будучи авторизованным в контексте mgr вы будете их видеть как пользователь, но хлебные крошки не будут строится для неопубликованных.
они все опубликованы и тут начинается самое интересное!
Если открыть страницу в (ВНИМАНИЕ) Режиме инкогнито, не логиниться НИГДЕ, то хлебная крошка тоже появляется появляется :DDD
Если открыть страницу в (ВНИМАНИЕ) Режиме инкогнито, не логиниться НИГДЕ, то хлебная крошка тоже появляется появляется :DDD
Никакой магии и квантовой физики, всего лишь нужно вызывать такие сниппеты НЕКЕШИРОВАННЫМИ, т.е.
{$_modx->runSnippet('!pdoCrumbs', options}
{$_modx->runSnippet('!pdoCrumbs', options}
А вот это забыл в П.С. записать
Это тоже не работает :DDD
Это тоже не работает :DDD
все, разобрался, пользовался этой заметкой для оптимизации
modx.pro/solutions/22267
и взял этот код:
modx.pro/solutions/22267
и взял этот код:
if( ! empty( $modx->context->resourceMap ) ) {
$options = [ xPDO::OPT_CACHE_KEY => 'context_settings/' . $modx->context->key ];
if( $val = $modx->getCacheManager()->get( 'context', $options ) ) {
$val[ 'resourceMap' ] = [];
$modx->getCacheManager()->set( 'context', $val, 0, $options );
}
}
Собственно этот плагин и мешал крошкам!
Я тоже пробовал так оптимизировать, но столкнулся с этой же проблемой.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.