Smarty (модификаторы, массивы, циклы и пр. подсказки)

Модификаторы Smarty:

upper, lower, capitalize

Описание: Возвращает строку, в которой все буквенные символы переведены в верхний или нижний регистр или заглавные соответственно 

{$text|upper}

truncate

Описание: Обрезает строку. Можно задать длину строки для обрезания, чем заканчивается обрезанная часть и обрезать ли слова.

Пример:

{$articleTitle}
{$articleTitle|truncate}
{$articleTitle|truncate:30}
{$articleTitle|truncate:30:""}
{$articleTitle|truncate:30:"---"}
{$articleTitle|truncate:30:"":true}
{$articleTitle|truncate:30:"...":true}
{$articleTitle|truncate:30:'..':true:true}

Результат: 

Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after...
Two Sisters Reunite after
Two Sisters Reunite after---
Two Sisters Reunite after Eigh
Two Sisters Reunite after E...
Two Sisters Re..ckout Counter.

replace

Описание: Передает для замены строку или массив (значения через запятую). Если на что менять не задано, то просто удаляет совпадения

Данный пример удалит пробелы:

{$text|replace:" ":""}

mb_substr:

удалить первый символ переменной

{$text|mb_substr:1}

удалить последний символ переменной

{$text|mb_substr:0:-1}

strip_tags

Описание: Удаляет теги html разметки

Пример:

{$articleTitle}
{$articleTitle|strip_tags}

Результат:

Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>.
Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .

Кодирование-декодирование URL:

{$url|urldecode}

Результат: utm_term=паста

{$url|urlencode}

Результат: utm_term=%D0%BF%D0%B0%D1%81%D1%82%D0%B0

Конкатенация (добавление к переменной):

{$text|cat:" добавляемый текст"}

Кол-во символов:

{$text|count_characters}

Аналогично: count_paragraphs, count_sentences и count_words

Отрезать все, что после символа &:

{$text|regex_replace:'/&.*/':''}

Проверка вхождения в $text подстроки $sub:

{if $text|strpos:$sub !== false}

Текущая дата

{$smarty.now|date_format:"%d.%m.%Y %H:%M"}

Заменяет все переносы строк на тэг <br /> в заданной переменной.

{$test|nl2br}

Добавляет пробел между разрядами крупных чисел. 

{$number|number}

Например 65000 приводится к виду 65 000.

Экранирование

{$text|escape}{$text|escape:'html'} // экранирует & " ' < > 

{$text|escape:'htmlall'} // экранирует ВСЕ HTML-сущности

{$text|escape:'url'}

{$text|escape:'quotes'}

Еще больше полезностей из Smarty:

Как закомментировать?

{* комментарий *}

Как экранировать код в котором встречаются {}

Поставить после { пробел, либо обернуть в:

{literal}...{/literal}

Как создать внутреннюю переменную smarty (напр $var) и присвоить ей значение:

{$var = "..."}

Использование условий if

{if isset($name) && !empty($name)} ... {elseif $name == $foo} ... {/if}

{if is_array($foo) && count($foo) > 0) {* do a foreach loop *} {/if}

Как посчитать количество элементов в массиве

{$group.items|count}

in_array

Описание: Проверяет наличие переменной в массиве

{if in_array($module, array('ProductView', 'ProductsView', 'CartView', 'OrderView', 'BrowsedView', 'CompareView', 'WishlistView'))}

Как организовать цикл for

Например нужен такой цикл: for($i=1;$i<10;$i++)

{section name=foo loop=9}

{$smarty.section.foo.iteration}

{/section}

Первый и последний элемент цикла:

{foreach $purchases as $purchase}

{if $purchase@first}...{/if}

{if $purchase@last}...{/if}

{/foreach}

Прервать цикл foreach:

{break}

Итерация:

{foreach $products as $p}

<p>product_num="{$p@iteration}"</p>

{/foreach}

Вывод первых 3 свойств через срез массива:

{foreach $product->features|@array_slice:0:3 as $f}

<p>{$f->name} - {$f->value}</p>

{/foreach}

Где: 0 - начало среза, 3 - кол-во элементов

Преобразовать строку в массив $widgets_ids по одинаковому разделителю ",":

{$widgets_ids = ","|explode:"1,2,3,4,5,6,7,8"}

{foreach $widgets_ids as $widget_id}

{$widget_id}

{/foreach}

Рандомное число:

{math equation='rand(10,100)'}

Получение GET-параметра:

Например из URL типа site.ru?utm_text=текст

{$smarty.get.utm_text}

Отображение параметра "page" из формы ($_POST['page'])

{$smarty.post.page}

Отображение значения cookie "name" ($_COOKIE['name'])

{$smarty.cookies.name}

Отображение серверной переменной "SERVER_NAME" ($_SERVER['SERVER_NAME'])

{$smarty.server.SERVER_NAME}

Адрес текущей страницы:

{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}

или

{$config->root_url}{$smarty.server.REQUEST_URI}

Адрес текущей страницы без GET-параметров:

{$smarty.server.HTTP_HOST}{strtok($smarty.server.REQUEST_URI,'?')}

или

{$config->root_url}{strtok($smarty.server.REQUEST_URI,'?')}

Отображение переменной системного окружения "PATH":

{$smarty.env.PATH}

Получить ID сессии:

{$smarty.session.id}

Отображение переменной "name" из смешанных get/post/cookies/server/env

{$smarty.request.name}

Определение разрешения файла:

{$image->name|pathinfo:$smarty.const.PATHINFO_EXTENSION}

Проверить переменную $text на вхождение текста 'abc' (с использованием strpos):

{if strpos($text, "abc") !== false}есть{/if}

Подсчитать количество символов:

{$str|count_characters:true}

Подсчитать количество абзацев:

{$str|count_paragraphs}

Подсчитать количество предложений:

{$str|count_sentences}

Подсчитать количество слов:

{$str|count_words}

Документация Smarty:

Smarty (модификаторы, массивы, циклы и пр. подсказки)

Еще нет своего сайта? Создайте интернет-магазин на платформе 5CMS - Все для продаж уже внутри!

Рекомендуем прочитать