Как в MODX вывести контент в зависимости от условия?
Здравствуйте, хотелось бы найти самый оптимальный способ вывода контента в зависимости от условия.
К примеру есть полеnumber
. Оно имеет числовые значения: 1000
, 2000
, 3000
, 4000
и так до десяти тысяч. Но, это не особо важно. Но, всё же опишу все мелочи. Нужно вывести слово Да
, если значение присвоенное ресурсу в тв, больше 6000
. Если меньше, выводим те значения которые присвоены ресурсам.
Знаю только один простой вариант:
[[+number:ge=`6000`:then=`Да`:else=`[[+number]]`]]
Время разбора: 0,0010831
в debugParser.
<?php
if(strlen($input)==0) return '';
$input = floatval(str_replace(array(' ',','), array('','.'), $input));
return number_format($input,(floor($input) == $input ? 0 : 2),'.',' ');
Вызывая так:
[[+number:ge=`6000`:then=`Да`:else=`[[+number:название сниппета]]`]]
Слишком прожорливый:
- Время выполнения запросов:
0,0001402
- Время разбора:
0,025019
Если возможно, подскажите, какие еще есть способы, более быстрые и «дешевые», чтобы реализовать аналогичное?
Ответы: 4
Привет! Можно придумать много различных вариантов:
1) Написать свой фильтр.a) Для этого нужно создать сниппет `myfilter:
b) Указать его в качестве фильтра:
2) Использовать написанный фильтр через Fenom:3) Написать это просто с помощью Fenom:
Александр, спасибо за варианты. Первые 2 способа ещё дольше обрабатываются, плюс 1 запрос. Обычный модификатор 0 запросов. Третий способ на Fenom, тоже плюс один запрос, но побыстрее первых двух.
Если всё правильно тестанул, то модификатор выигрывает по скорости, странно как-то или нет? Как разбить число на разряды, во всех этих способах? И стоит ли использовать феном в месте с стандартным синтаксисом или только что-то одно?Чтобы число разбить на разряды можно написать свой собственный модификатор.
1) Для этого нужно создать сниппетmyfilter
: В сниппете для разбивания числа на разряды используется php-функцияnumber_format
.2) Далее использовать этот модификатор:
Попробуй всё переписать на Fenom, тогда скорость должна увеличиться. Fenom все элементы обрабатывает за раз. Тем более что в Fenom можно использовать файловый режим и вынести все чанки и сниппеты в файлы, тогда для их получения не нужно будет выполнять дополнительные запросы к базе данных.