pdoCrumbs запоминает только одну страницу в кеше

Приветствую!

В общем проблема следующая:
— Есть вызов Крошек:
{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,
])}
По какой то причине, Крошки строятся только от текущего документа до корня сайт (до главной), т.е.:
  • Должно быть так :
  • Главная > Раздел > Элемент раздела
  • А выводит так :
  • Главная > Элемент раздела
Дополнение. Элементы разделов это Тикеты и Продукт (Tickets и Minishop2 соответственно).

А теперь немного МАГИИ.
Если зайти на страницу любого элемента и обновить кеш или сохранить любой ресурс в админке, то ВУОЛЯ «Раздел» появляется в навигации, НО только на том ресурсе на котором остановился наблюдатель… т.е. получается что то вроде этого:
Элемент раздела 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 );
  }
}
Собственно этот плагин и мешал крошкам!
Andrey
10 января 2022, 16:29
modx.pro
504
0

Комментарии: 7

Andrey
10 января 2022, 16:30
0
и да… гребаная квантовая физика… но такие дела
    Александр Мельник
    10 января 2022, 18:45
    0
    Час назад использовал этот сниппет и все норм, строит крошки включая все разделы и подразделы.
    Проверьте, опубликованы ли ваши ресурсы? Будучи авторизованным в контексте mgr вы будете их видеть как пользователь, но хлебные крошки не будут строится для неопубликованных.
      Andrey
      10 января 2022, 19:49
      0
      они все опубликованы и тут начинается самое интересное!

      Если открыть страницу в (ВНИМАНИЕ) Режиме инкогнито, не логиниться НИГДЕ, то хлебная крошка тоже появляется появляется :DDD
      Баха Волков
      10 января 2022, 22:40
      +1
      Никакой магии и квантовой физики, всего лишь нужно вызывать такие сниппеты НЕКЕШИРОВАННЫМИ, т.е.
      {$_modx->runSnippet('!pdoCrumbs', options}
        Andrey
        11 января 2022, 15:18
        0
        А вот это забыл в П.С. записать
        Это тоже не работает :DDD
          Andrey
          11 января 2022, 15:32
          0
          все, разобрался, пользовался этой заметкой для оптимизации
          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 );
            }
          }
          Собственно этот плагин и мешал крошкам!
            Роман
            12 января 2022, 09:13
            +1
            Я тоже пробовал так оптимизировать, но столкнулся с этой же проблемой.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7