фильтры ввода.вывода для условных варажений
Можно ли с помощью фильтров ввода/вывода сделать множественные условные выражения? например
такой вариант
Как же стандартными методами выполнить множественные условия как else if, а не только if{} else{}
такой вариант
[[!context:is=`en`:then=`[[$en-company-name]]`:else=`[[$company-name]]`]]
будет работать, это обозначено в документации, но вот такой например[[!context:is=`en`:then=`[[$en-company-name]]`else:is=`de`:then=`[[$de-company-name]]`:else=`[[$company-name]]`]]
уже не будет…Как же стандартными методами выполнить множественные условия как else if, а не только if{} else{}
Комментарии: 5
подобрал такой извращ-й вариант:
[[!context:is=`en`:then=`[[$en-company-name]]`:else=`[[!context:is=`de`:then=`[[$de-company-name]]`:else=`[[$company-name]]`]]`
]]
Не нужно так делать. Для логики нужно писать сниппеты, а не программировать на фильтрах.
И выглядит понятнее, и работает быстрее, и добавить еще 10 условий\проверок — не вопрос.
switch ($modx->context->key) {
case 'en' : $chunk = 'en-company-name'; break;
case 'de' : $chunk = 'de-company-name'; break;
default: $chunk = 'company-name'; break;
}
return $modx->getChunk($chunk);
И выглядит понятнее, и работает быстрее, и добавить еще 10 условий\проверок — не вопрос.
а если просто использовать такую конструкцию?
[[$[[*context_key]]-company-name]]
для дефолтного контектста нужно в название чанка добавить префикс.
первый вариант хотел использовать, второй для ситуации тоже подходит, спасибо
Чтобы для каждого конкретного случая не писать отдельный сниппет, можно использовать switch: modx.com/extras/package/switch
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.