Помогите с fenom

Не первый раз сталкиваюсь с тем что нужно сделать проверку условия и в зависимости от этого выполнить тот или иной сниппет и при этом при конструкции написанной ниже так не получится — какая то проблема с кавычками видимо.
[[+type:is=`student`:then=``:else=``]]
Поэтому понравилась работа в fenom.
Но сейчас столкнулся с проблемой (работаю с профилем то есть в шаблоне а не в tpl) что создав тип пользователя в чанке я могу его вывести с помощью [[+type]] но не могу вывести с помощью fenom. Конструкции типа
{$_modx->getPlaceholder('type')}
и
{$_pls['type']}
не помогают.
Ок. Сделал так:
{var $type = "[[+type]]"}
{$type}
Все ок — выводится. Нужно сделать условие к примеру
{if $type in ['school','expert']}
                                yes
                            {else}
                                no
                            {/if}
Не работает правильно. Выводит нет. Хотя сам тип равен 'school'. Помогите плиз.
Евгений Лазарев
16 октября 2018, 14:31
modx.pro
732
0

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

Konstantin
16 октября 2018, 22:16
+1
Нихера не понял вопрос, ибо сумбурно, но: аналог [[+type]] на феном это {$type}, а не {$_pls['type']} или {$_modx->getPlaceholder('type')}.
{$_pls['type']}
– так выводятся плейсхолдеры с точкой или тире
А это
{$_modx->getPlaceholder('type')}
удобнее писать так
{'type' | placeholder}
Не работает правильно. Выводит нет. Хотя сам тип равен 'school'. Помогите плиз.
а это потому что ошибка, не $type in, $type | in:
{if $type | in : ['school','expert']}
    yes
{else}
     no
{/if}
    Евгений Лазарев
    24 октября 2018, 15:24
    0
    Не работает. Ни одна из позиций написанная выше. Дело в том что работа с переменной $type идет не в чанке а в самом шаблоне.
      Андрей
      24 октября 2018, 15:43
      0
      Вот так если попробовать:
      {if $_modx->resource.type | in : ['school','expert']}
      Будет работать?
        Евгений Лазарев
        24 октября 2018, 18:28
        0
        Неа. Тут вопрос мне кажется не во втором шаге а в первом.
        Если бы я написал конструкцию
        {var $type = 'pupil'}
                                    {if $type | in : ['pupil','expert']}
                                        yes
                                    {else}
                                        no
                                    {/if}
        То выведет yes. Все супер! НО!
        Выше всего этого дела у меня написан сниппет который вызывает код для определения текущего типа пользователя. Не стал использовать isMember так как все время с чем то сверять на мой взгляд бред
        <?php
        $types = [
            'pupil'         => 'Ученик',
            'teacher'       => 'Учитель',
            'parent'        => 'Родитель',
            'school'        => 'Школа',
            'expert'        => 'Эксперт',
            'manager'       => 'Менеджер',
            'Administrator' => 'Администратор'
        ];
        
        if (isset($userId) && !empty($userId)){
            $user = $modx->getObject('modUser', $userId);
            $cur_type = $user->getUserGroupNames()[0];
        } else {
            $cur_type = $modx->user->getUserGroupNames()[0];   
        }
        $modx->setPlaceholder('type',$cur_type);
        return $types[$cur_type];
        И вот из этого сниппета обратно в шаблон (не чанк, не tpl, не сниппет) мне нужно обратно передать эту переменную чтобы с ней в нескольких местах работать проверяя какие либо вещи. И вот она работать не хочет.
        Как плейсхолдер [[+type]] без проблем. Но как переменная в fenom только в виде
        {var $type = '[[+type]]'}
        Но в таком случае не получаются вышеизложенные вещи. Бред короче.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4