Александр и снова здравствуйте, хотелось бы найти самый оптимальный способ вывода контента в зависимости от условия, к примеру есть поле (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
Если возможно, подскажите какие еще есть способы, более быстрые и "дешевые" чтобы реализовать аналогичное?
1 Способ. Можно написать свой фильтр.
1. Для этого нужно создать сниппет myfilter:
2. Указать его в качестве фильтра:
2 Способ. Использовать созданный фильтр в Fenom:
3 Способ. Написать это просто с помощью Fenom:
1. Для этого нужно создать сниппет myfilter:
В сниппете для разбивания числа на разряды используется php функция number_format.
2. Далее использовать этот модификатор:
Попробуй всё переписать на Fenom, тогда скорость должна увеличиться. Fenom все элементы обрабатывает за раз. Тем более что в Fenom можно использовать файловый режим и вынести все чанки и сниппеты в файлы, тогда для их получения не нужно будет выполнять дополнительные запросы к базе данных.