Модификаторы предназначены для изменения, выводимых через шаблон, данных.
!>Общая информация по использованию модификаторов находится в разделе помощи к шаблонизатору.
Все модификаторы Fenom можно использовать в модуле.
На этой странице перечислены модификаторы, используемые в модуле BlockPro.
Ограничение количества символов контента.
Принимает три параметра:
- Максимальное количество символов в тексте.
- Текст, показываемый в конце обрезанной строки.
- Жесткое ограничение символов. Если передать
true
не будет учитываться логический конц слова.
Вывести 150 символов:
{$el.short_story|limit:'150'}
Вывести 50 символов и троеточие в конце:
{$el.short_story|limit:'50':'…'}
Вывести 30 символов, троеточие в конце и жестко обрезать тест без учёта слов:
{$el.short_story|limit:'50':'…':true}
Получение изображения из контента.
Так же можно использовать модификаторы tinypng и kraken
image — встроенный функционал.
tinypng — получение картинки через сервис tinypng.com
kraken — получение картинки через сервис kraken.io
Принимает следующие параметры:
- (string) $data — Строка, из которой будем брать картинку/картинки
- (string) $noimage — Картинка-заглушка
- (string) $imageType — Тип картинки (small/original/intext) - для получения соответствующей картинки или массива картинок
- (integer/string) $number — Номер картинки в контенте или all для вывода всех картинок
- (string) $size — Размер картики (например 100 или 100x150)
- (string) $quality — Качество картинки (0-100)
- (string) $resizeType — Тип ресайза (exact, portrait, landscape, auto, crop)
- (boolean) $grabRemote — скачивать картинки со сторонних сайтов к себе (true/false)
- (boolean) $showSmall — Обрабатывать уменьшенную копию, если есть
- (string) $subdir — Подпапка для картинок
{$el.short_story|image:$noimage:'small':'1':'':'':'':true:false:'/uploads/myfolder'}
{$el.full_story|image:$noimage:'intext':'all':'150x450':'':'landscape':true:false}
{$el.full_story|tinypng:$noimage:'small':'1':'150':'':'crop':true:false}
{$el.full_story|kraken:$noimage:'small':'1':'150':'':'crop':true:false}
Склонение слова в соответствии с количеством.
Например: 1 коментарий, 2 комментария, 100 комментариев
Выведет текст: 15 комментариев
{$el.comm_num} {$el.comm_num|declination:'комментари|й|я|ев'}
Форматирование даты в соответствии с маской.
Аналог {date="D m Y"}
{$el.date|dateformat}
{$el.date|dateformat:"d F Y"}
Форматирование даты в формате "time ago".
В качестве параметра модификатор принимает цифру от 0 до 6, указывающую точность вывода от года до минут. По умолчанию установлено значение 2.
Выведет результат:
2 года, 4 месяца, 1 неделю, 6 дней, 12 часов и 5 минут назад.
{$el.date|timeago:6}
Выводит информацию о категории или категориях, к которой принадлежит новость.
Весь массив данных:
{$el.category|catinfo}
Название категории:
{$el.category|catinfo:'name'}
Ссылка на категорию:
{$el.category|catinfo:'link'}
URL категории:
{$el.category|catinfo:'url'}
Иконка категории:
{$el.category|catinfo:'icon'}
Иконка категории (с заглушкой):
{$el.category|catinfo:'icon':$noimage}
Получает информацию о пользователях, добавивших новости непосредственно в шаблоне.
Более детальную информацию о процедуре получения пользователей можно увидеть в шаблоне getuserinfo.tpl
{set $users = []}
{foreach $list as $el}
{set $users[] = $el.autor}
{/foreach}
{set $arUsers = $users|getAuthors:'email, user_id, news_num, comm_num, foto'}
{unset $users}
<pre>{$arUsers|dump}</pre>
Модификатор ematch_all является аналогом php-функции preg_match_all.
Применяется к любой строке.
В качестве параметра принимает регулярное выражение.
Возвращает массив с найденными совпадениями или пустой массив.
{foreach $list as $key => $el}
{set $totalGifs = 0}
{set $otherImages = 0}
{set $images = $el.short_story|ematch_all:'/<img(?:\\s[^<>]*?)?\\bsrc\\s*=\\s*(?|"([^"]*)"|\'([^\']*)\'|([^<>\'"\\s]*))[^<>]*>/i'}
{if $images[1]|length}
{foreach $images[1] as $image}
{if ('dleimages' in $image) || ('engine/data/emoticons' in $image)}
{continue}
{/if}
{set $imgInfo = $image|pathinfo}
{if $imgInfo.extension == 'gif'}
{set $totalGifs = $totalGifs + 1}
{else}
{set $otherImages = $otherImages + 1}
{/if}
{/foreach}
{/if}
<p>
В новости <b><a href="{$el.url}">{$el.title}</a></b>
{$totalGifs} {$totalGifs|declination:'гиф|ка|ки|ок'},
а так же
{$otherImages} {$otherImages|declination:'|другая картинка|других картинки|других картинок'}
</p>
{/foreach}
Выводит заданное количество предложений (до точки).
Иногда полезно для вывода завершенных предложений, а не слов.
Выведет два первых предложения из краткой новости.:
<pre>{$el.short_story|sentence:'2'}</pre>
Выводит данные через php-функцию print_r.
Крайне полезно для отладки во время разработки шаблона.
Выведет всё содержимое массива одной новости:
<pre>{$el|dump}</pre>
Выведет содержимое допполей как есть:
<pre>{$el.xfields|dump}</pre>