@MyQuestion
junior-middle fullstack

Modx Revo: как получить id соседнего ресурса?

Добрый день!

С помощью PDOtools - pdoNeighbors, я реализовал навигацию по соседним ресурсам. Но я хочу выводить не только ссылку и имя соседнего ресурса, я хочу выводить превью или карточку соседнего ресурса. Как если бы забирал соседний ресурс, с помощью pdoResources.

Что я делаю:
Вызов навигации
[[pdoNeighbors?
  &sortby=`publishedon`
  &sortdir=`asc`
  &tplNext=`
  @INLINE 
  <div class="">
    [[!pdoResources?
      &resources=`[[!getUrlID? &uri=`[[+uri]]`]]`
      &parents=`10`
      &tpl=`blogNeighboringPreviewTpl`
      &includeTVs=`previewPicture,author, blog-cards-alt-title`
    ]]
    <a href="/[[+uri]]"><img class="" src="/img/next2.svg"></a>
  </div>`
  &tplPrev=`@INLINE <a href="/[[+uri]]"><img src="/img/prev2.svg">[[+pagetitle]]</a>`
  &tplWrapper=`@INLINE <div class="">[[+prev]][[+next]]</div>`
  &includeTVs=`previewPicture,author, blog-cards-alt-title`
]]


Сниппет
return $modx->findResource($uri, 'web');

В чём идея. Я в pdoNeighbors вызываю pdoResources и передаю uri в сниппет, который вызываю с параметрами. В сниппете, я получаю id ресурса через поиск по uri и возвращаю его. По идее pdoResources в &resources=`[[!getUrlID? &uri=`[[+uri]]`]]` должен получить id и вывести ресурс.

В чём проблема: видимо цепочка вызовов в какой-то момент ломается. Сам сниппет, успешно возвращает мой id, но в pdoResources он просто не отрабатывает, и выводятся все ресурсы родителя. Я думаю, что приоритет вызова, у pdoResources выше, чем у pdoNeighbors, и так как [[+uri]] приходит из pdoNeighbors, в момент вызова pdoResources [[+uri]] просто пустой. Если я вызову всё тоже самое, но заранее, передам url в сниппете, то всё отработает как надо. Но это статика.

Как получить id соседнего ресурса другим способом или как исправить этот?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы