Непредсказуемая логика в операции модификатора eq

Здравствуйте!
Почему, когда я залогинен, то сниппет redirect все равно выполняется? Как исправить эту странную логику?

[[!+modx.user.id:isloggedin:eq=`1`:then=`
	. . .			
`:else=`
	[[!redirect]]
`]]

redirect:
header('HTTP/1.1 301 Moved Permanently');
header('Location: /');
Владимир
23 декабря 2023, 14:08
modx.pro
368
0

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

Алексей Смирнов
23 декабря 2023, 14:48
+1
Оно будет срабатывать потому что так устроен MODX. тут или большая вложенность или эффект парсера модикс.
Дело в том что он (парсер) рекурсивный, а значит до того как сработает условие — вычисляет данные внутри всех условий (если я не ошибаюсь в формулировках).
Я обычно сниппеты делаю в таком режиме — режим «наоборот».
те есть в модиксе комментирование кода
[[- some code ]]
Поэтому ваше выражение можно переписать так:
[[[[!+modx.user.id:isloggedin:eq=`1`:then=`-`:else=``]]!redirect]]
возможно еще с воскл. знаками поиграться придется. Для другого контента который у вас был, будет условие:
[[!+modx.user.id:isloggedin:eq=`1`:then=` ....  `:else=``]]
Как-то так.
    Владимир
    23 декабря 2023, 15:01
    0
    Спасибо, способ хоть и костыльный, но работает. Да, видимо дело в особенностях работы парсера.
      Владимир
      23 декабря 2023, 16:01
      0
      Хотя в журнал ошибок теперь сыплются строки:
      Could not find snippet with name [[!+modx.user.id:isloggedin:eq=`1`:then=`-`]]redirect
        Алексей Смирнов
        23 декабря 2023, 16:06
        0
        потому что вы сократили мой совет надо еще чтобы было обязательно else
        иначе запись не корректна.
          Владимир
          23 декабря 2023, 16:47
          0
          Еще одна непредсказуемая логика :) Я думал, что по-умолчанию else и так пустой, если его не задавать.
            Владимир
            23 декабря 2023, 16:50
            0
            Нет, с else тоже пишет в журнал(
              Алексей Смирнов
              23 декабря 2023, 16:58
              0
              Переходите на fenom тогда. И не будет таких надписей. Или напишите свой снипет с дополнительной логикой проверки.
                Владимир
                23 декабря 2023, 17:47
                0
                Спасибо! На Феноме без проблем работает.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8