pdoResources внутри модификатора
Здравствуйте!
Хочу создать условие, если в адресной строке браузера url текущей страницы открывается вместе с GET параметром, то выводим форму от easyComm. Если в адресной строке url текущей страницы открывается без GET параметра, то выводим сообщение и список ресурсов со ссылками с GET параметрами.
Для получения url текущей страницы вместе с get параметром, воспользовалась предложенным сниппетом Павла.
Вот что, у меня получилось:
Может вы сталкивались с такой задачей и может сможете поделиться решением? Заранее спасибо всем.
Хочу создать условие, если в адресной строке браузера 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.Может вы сталкивались с такой задачей и может сможете поделиться решением? Заранее спасибо всем.
Комментарии: 8
Забыла написать. Чанк [[$showformreview]] содержит сниппет формы добавления отзыва. Я вспомнила, что в чанке недопустимо вызывать сниппеты.
В целом, мне необходимо найти решение, если url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] ), то выводим форму добавления easyComm. А если url текущей страницы без get параметра ( site,ru/add-review/ ), то выводим результат запроса pdoResource.
Может найдется решение? Кто-нибудь сталкивался с такой задачей? Как решили?
В целом, мне необходимо найти решение, если url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] ), то выводим форму добавления easyComm. А если url текущей страницы без get параметра ( site,ru/add-review/ ), то выводим результат запроса pdoResource.
Может найдется решение? Кто-нибудь сталкивался с такой задачей? Как решили?
Друзья, не ужели никто не сталкивался с такой задачей?
Сталкивались. это по сути не лечится т.к. это один из косяков парсера MODX тегов.
самый очевидный вариант, как-то по-тиху переходить на fenom.
Второй вариант переписать условие:
самый очевидный вариант, как-то по-тиху переходить на 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>
Добрый день, Алексей!
Спасибо вам за предложенный вариант решения задачи.
Но форма отображается независимо от того, что url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] или нет. И в том и в другом, отображается форма.
Но все равно, спасибо большое!
Спасибо вам за предложенный вариант решения задачи.
Но форма отображается независимо от того, что url текущей страницы содержит get параметр ( site,ru/add-review/?str=[[+id]] или нет. И в том и в другом, отображается форма.
Но все равно, спасибо большое!
site,ru/add-review/?str=[[+id]]
А вы прям так в url Забиваете адрес? Условия
[[!#GET.str:ne=`0`:then=``:else=`-`]]
вы уверены что корректно написали условие?Ведь id у вас всегда будет >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* — это может быть любая цифра. А текст выберите ресурс и список ресурсов скрываем.
20 — это id ресурса, для которого будет написан отзыв. На сайте много ресурсов, в которых есть отзывы. Для каждого ресурса можно написать отзыв.
Форма easyComm у меня отделена от страницы отзывов и размещена как отдельная страница.
Поэтому с помощью ?str= передается id для которой форма отзывов easyComm будет привязана.
Если страница открывается без хвостов, т.е так site.ru/add-review/
то выводим текст: Пожалуйста, выберите ресурс для написания отзыва! и список ресурсов, который подготовлен с помощью запроса pdoResources. А форму не выводим.
Если страница открывается с хвостом, т.е site.ru/add-review/?str=N*
то выводим форму easyComm, которая находится в чанке showformreview.
N* — это может быть любая цифра. А текст выберите ресурс и список ресурсов скрываем.
ну у вас по этому условию:
Если вы хотите чтобы срабатывало, то следует использовать другое сравнение:
[[!#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`]]
Надеюсь, что этот вариант сработает.
Алексей, данный вариант сработал. Огромное вам спасибо за помощь в решение данной задачи.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.