Помогите с fenom
Не первый раз сталкиваюсь с тем что нужно сделать проверку условия и в зависимости от этого выполнить тот или иной сниппет и при этом при конструкции написанной ниже так не получится — какая то проблема с кавычками видимо.
Но сейчас столкнулся с проблемой (работаю с профилем то есть в шаблоне а не в tpl) что создав тип пользователя в чанке я могу его вывести с помощью [[+type]] но не могу вывести с помощью 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'. Помогите плиз. Комментарии: 4
Нихера не понял вопрос, ибо сумбурно, но: аналог [[+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}
Не работает. Ни одна из позиций написанная выше. Дело в том что работа с переменной $type идет не в чанке а в самом шаблоне.
Вот так если попробовать:
{if $_modx->resource.type | in : ['school','expert']}
Будет работать?
Неа. Тут вопрос мне кажется не во втором шаге а в первом.
Если бы я написал конструкцию
Выше всего этого дела у меня написан сниппет который вызывает код для определения текущего типа пользователя. Не стал использовать isMember так как все время с чем то сверять на мой взгляд бред
Как плейсхолдер [[+type]] без проблем. Но как переменная в fenom только в виде
Если бы я написал конструкцию
{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]]'}
Но в таком случае не получаются вышеизложенные вещи. Бред короче.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.