pdoResources внутри модификатора

Здравствуйте!
Хочу создать условие, если в адресной строке браузера url текущей страницы открывается вместе с GET параметром, то выводим форму от easyComm. Если в адресной строке url текущей страницы открывается без GET параметра, то выводим сообщение и список ресурсов со ссылками с GET параметрами.

Для получения url текущей страницы вместе с get параметром, воспользовалась предложенным сниппетом Павла.
[[!#GET.имя_параметра]]
У меня получилось
[[!#GET.str]]
А для создания условия, попробовала использовать модификаторы и сниппет от Павла.
Вот что, у меня получилось:
[[!#GET.str:ne=`0`:then=`[[$showformreview]]`
:else=`<div class="cap-inside col-12 bg-white border-radius-16px px-3 py-4 my-4">
<div>Пожалуйста, выберите ресурс для написания отзыва!</div> 
<div>[[pdoResources? &parents=`56` &depth=`0` &tpl=`liststr`]]</div></div>`]]
Чанк liststr содержит следующий код:
<a href="/add-review/?str=[[+id]]">[[+pagetitle]]</a>`]
Но к сожалению, не работает. Условие работает, если убрать запрос с pdoResources.
Может вы сталкивались с такой задачей и может сможете поделиться решением? Заранее спасибо всем.
Zulya
30 января 2023, 06:54
modx.pro
1
474
0

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

Zulya
30 января 2023, 12:44
0
Забыла написать. Чанк [[$showformreview]] содержит сниппет формы добавления отзыва. Я вспомнила, что в чанке недопустимо вызывать сниппеты.

В целом, мне необходимо найти решение, если url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] ), то выводим форму добавления easyComm. А если url текущей страницы без get параметра ( site,ru/add-review/ ), то выводим результат запроса pdoResource.

Может найдется решение? Кто-нибудь сталкивался с такой задачей? Как решили?
    Zulya
    31 января 2023, 10:15
    0
    Друзья, не ужели никто не сталкивался с такой задачей?
      Алексей Смирнов
      31 января 2023, 10:27
      +1
      Сталкивались. это по сути не лечится т.к. это один из косяков парсера MODX тегов.
      самый очевидный вариант, как-то по-тиху переходить на fenom.
      Второй вариант переписать условие:
      [[[[!#GET.str:ne=`0`:then=``:else=`-`]]$showformreview]]
      [[[[!#GET.str:ne=`0`:then=`-`:else=``]]pdoResources? &parents=`56` &depth=`0` &tpl=`liststr` &tplWrapper=`wrappchunk`]]
      Содержимое wrappchunk чанка:
      <div class="cap-inside col-12 bg-white border-radius-16px px-3 py-4 my-4">
      <div>Пожалуйста, выберите ресурс для написания отзыва!</div> 
      <div>[[+output]]</div></div>
        Zulya
        04 февраля 2023, 11:53
        0
        Добрый день, Алексей!
        Спасибо вам за предложенный вариант решения задачи.
        Но форма отображается независимо от того, что url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] или нет. И в том и в другом, отображается форма.
        Но все равно, спасибо большое!
          Алексей Смирнов
          04 февраля 2023, 11:59
          +1
          site,ru/add-review/?str=[[+id]]
          А вы прям так в url Забиваете адрес?
          Условия
          [[!#GET.str:ne=`0`:then=``:else=`-`]]
          вы уверены что корректно написали условие?
          Ведь id у вас всегда будет >0, если вы выводите в сниппете.
          Уточните логику.
            Zulya
            04 февраля 2023, 13:44
            0
            В адресной строке открывается site.ru/add-review/?str=20
            20 — это id ресурса, для которого будет написан отзыв. На сайте много ресурсов, в которых есть отзывы. Для каждого ресурса можно написать отзыв.
            Форма easyComm у меня отделена от страницы отзывов и размещена как отдельная страница.
            Поэтому с помощью ?str= передается id для которой форма отзывов easyComm будет привязана.

            Если страница открывается без хвостов, т.е так site.ru/add-review/
            то выводим текст: Пожалуйста, выберите ресурс для написания отзыва! и список ресурсов, который подготовлен с помощью запроса pdoResources. А форму не выводим.

            Если страница открывается с хвостом, т.е site.ru/add-review/?str=N*
            то выводим форму easyComm, которая находится в чанке showformreview.
            N* — это может быть любая цифра. А текст выберите ресурс и список ресурсов скрываем.
              Алексей Смирнов
              04 февраля 2023, 14:01
              1
              +1
              ну у вас по этому условию:
              [[!#GET.str:ne=`0`:then=``:else=`-`]]  // тут не равно 0
              Будет срабатывать, если ресурс не равен 0. те всегда.
              Если вы хотите чтобы срабатывало, то следует использовать другое сравнение:
              [[!#GET.str:gte=`0`:then=``:else=`-`]]  // больше или равно
              Таким образом:
              [[[[!#GET.str:gte=`0`:then=``:else=`-`]]$showformreview]]
              [[[[!#GET.str:gte=`0`:then=`-`:else=``]]pdoResources? &parents=`56` &depth=`0` &tpl=`liststr` &tplWrapper=`wrappchunk`]]
              Надеюсь, что этот вариант сработает.
                Zulya
                04 февраля 2023, 21:30
                0
                Алексей, данный вариант сработал. Огромное вам спасибо за помощь в решение данной задачи.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8