Применение фильтра в UltimateParent

Добрый день, коллеги!
Мне недавно по моему вопросу подсказывал уважаемый Pavel Romanov.
Я спрашивал: «Как распространить действие условия и на страницу с id=21 и на все уровни вложенности в нее. Т.е. на моем примере на этот пункт меню и на все его дочерние, не взирая на уровень вложенности.»

Он предложил отлично работающую конструкцию. До недавних пор :)
[[UltimateParent:is=`21`:then=``:else=``? &topLevel=`....`]]
На данный момент стало необходимо добавить еще один ID с другим then, но таким же else в данную конструкцию.
т.е. типа такого что-то
[[UltimateParent:is=`21`:then=``:oris=`22`:then=``:else=``? &topLevel=`....`]]
чтоб было два разных «is» со своими «then», но один общий «else». Это осуществимо?
Заранее благодарю. С ув.
Алексей
09 июля 2015, 07:05
modx.pro
1 238
0

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

Павел Романов
09 июля 2015, 17:12
+1
Тогда просто сделайте сниппет типа:
$param = array(
'topLevel' = .......
);
$parent = $modx->runSnippet('UltimateParent', $param);
if($parent == 21) {
    $output = 'что-то для 21';
} elseif ($parent == 22) {
    $output = 'что-то для 22';
} else {
     $output = 'что-то, что ни туда, ни туда не попадает';
}
return $output;
    Алексей
    13 июля 2015, 09:53
    0
    Спасибо, Вам, огромаднейшее. В который раз выручили! Единственное: с таким кодом
    'topLevel' = 2
    — вываливалось в ошибку. Сделал так:
    'topLevel' == 2
    — так работает безупречно.
    Теперь еще два вопроса:
    1. Правильно ли я поправил Ваш код?
    2. Вызывать сниппет кешируемым, или нет?
      Павел Романов
      13 июля 2015, 10:03
      +1
      Да, сорри, это я описался.
      Должно быть так:
      $param = array(
      'topLevel' => 2
      );
      По идее, можно кешированным — у Вас же нет каких-то динамических параметров или переменных запроса.
        Алексей
        13 июля 2015, 10:10
        0
        Понял, сейчас у себя поправлю. Нет, там просто текст выводится в дивах. Спасибо, Павел, Вам еще раз!!!
        Zulya
        18 ноября 2016, 07:54
        0
        Павел, он лучший из лучших! Такого благородного, щедрого и доброго человека я не видела в своей жизни. Я тоже очень благодарна ему.
      Алексей
      13 июля 2015, 09:52
      0
      Спасибо, еще раз!
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6