Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Пример демонстрирует работу модификатора ematch_all в модуле BlockPro
{*
Пример демонстрирует работу модификатора ematch_all в модуле BlockPro
показано как можно посчитать количество картинок в новости.
*}
{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'}
{* Для вывода результатов работы модификатора можно использовать конструкцию: *}
{* <pre>{$images|dump}</pre> *}
{* Если нашлась хоть одна картинка — работаем *}
{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}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment