Полезные функции для веб-разработчиков (GET, JS и Smarty)

GET-запросы:

Добавление товара с id варианта 143 в кол-ве 2 шт в корзину:

http://site.ru/cart?variant=143&amount=2

  • Для добавления в шаблонах get-параметров к урлу пригодится функция url (ниже по тексту) 

Поиск:

https://site.ru/blog?keyword=текст

Сортировка на страницах:

https://site.ru/hits?sort=priceup

Авторизация в админке:

https://логин:пароль@site.ru/fivecms/

JS:

toggleText(text,text)

Описание: замена текста

Пример:

$(el).toggleText('подробнее','свернуть')

readCookie(name), createCookie(name,value,days)

Описание: работа с Cookie

Пример:

createCookie("dontgo", "1", "365"); // запись

var text = readCookie("dontgo"); // чтение

Скролл к элементу:

Описание: по клику на элемент с class="anchor" будет произведен скролл к элементу, указанному в data-anchor. 

Пример:

<span class="anchor" data-anchor=".post-comments">Комментариев: 2</span>

Ссылка на сторонний сайт скриптом:

Описание: по клику на элемент с class="url" будет открыт сайт по адресу http://site.ru (берется из data-url) в новой вкладке 

Пример:

<span class="url bluelink" data-url="http://site.ru">на сайт</span>

Открытие картинки в модальном окне:

Описание: по клику на картинку с class="izoom" она будет открыта в модальном окне

Пример:

<img class="izoom" src="files/uploads/img.jpg" />

Smarty:

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

url

Цель: добавить get-параметр "color" к текущему урлу (в т.ч. содержащему другие get-параметры, напр. "purpose")

Пример:

{url color=0}

Результат: /about?color=0&purpose=0

Переменные:

$settings

Описание: настройки из админки (содержимое таблицы f_settings)

Пример:

<link href="design/{$settings->theme|escape}/css/style.css" /> // путь до файла со стилями в теме дизайна из настроек

Пример:

{$settings->site_name} // имя сайта из настроек

$config

Цель: получить адрес сайта

Пример: 

{$config->root_url}

$uagent

Описание: получаем в шаблоне "iphone", "ipad" или "android"

Пример:

{$uagent} 

$module

Описание: получаем к какому контроллеру относится данный шаблон

Пример:

{$module}

ПЛАГИНЫ (находятся в /view/View.php):

  • Примечание: в category_id можно передать не только одно значение, но и массив:
    {$category_id = array('12','13')}
    или
    {$category_id[] = $category->id}
    {if $category->path[0]->id != $category->id}
       {$category_id[] = $category->path[0]->id}
    {/if}
    {foreach $category->subcategories as $c}
       {$category_id[] = $c->id}
    {/foreach}

get_posts

Описание: получаем записи блога

Параметры: var (название переменной), limit (кол-во записей), category_id (id раздела блога из которого нужно вывести посты), sort (date, rand)

Пример:

{get_posts var=last_posts category_id=$category->id limit=4 sort=date}
{if $last_posts}
   {foreach $last_posts as $post}
         <a href="blog/{$post->url}">{$post->name|escape}</a>
         {$post->annotation}
         {$post->text}
   {/foreach}
{/if}

get_pages

Описание: получаем страницы

Параметры: var (название переменной), menu_id (id меню)

Пример:

{get_pages var="menu_top" menu_id="1"}
{if $menu_top}
   <ul>
      {foreach $menu_top as $p}
         <li>
            <a href="{$p->url}">{$p->name|escape}</a>
         </li>
      {/foreach}
   </ul>
{/if}

get_articles

Описание: получаем статьи

Параметры: var (название переменной), sort (position, date, name, rand), limit (кол-во записей), category_id (id категории из которой нужно вывести статьи)

Пример:

{get_articles var=last_articles sort=position category_id=$category->id limit=4}
{if $last_articles}
   {foreach $last_articles as $post}
         <a href="article/{$post->url}">{$post->name|escape}</a>
         {$post->annotation}
         {$post->text}
   {/foreach}
{/if}

get_products

Описание: получаем товары

Параметры: var (название переменной), [featured (1) - хит продаж/рекомендуемые, is_new (1) - новинки, discounted (1) - с наличием "старой цены"], sort (position, name, date, rating, rand), limit (кол-во товаров), category_id (id категории из которой нужно вывести товары), id (id товара или массива товаров), brand_id (id бренда), in_stock (1), visible (1), keyword (выборка по ключевому слову)

Пример вывода товаров с меткой "хит продаж":

{get_products var=featured_products featured=1 category_id=$category->id sort=rand limit=4}
{if $featured_products}
   {foreach $featured_products as $product}
      {$product->name|escape}
   {/foreach}
{/if}

Также можно вывести внутри цикла данные о категории товара:

  • {$product->category->id}
  • {$product->category->name}
  • {$product->category->url}

api

Описание: универсальный плагин для вызова нужных функций API прямо в шаблоне

Параметры:

  • var (название будущей переменной)
  • module (название класса к которому мы обращаемся (список классов можно посмотреть в папке api))
  • method (функция, которая нам нужна из класса, к которому обращаемся)
  • а также параметры (если используются данным классом): limit, visible, sort, category_id, keyword и т.д

Пример:

а) вывод брендов в категории:

{if $category}
   {$filter_brand = $category->path|reset}
   {api module=brands method=get_brands visible=1 category_id=$filter_brand->children var=category_brands}
   {foreach $category_brands as $b}
       {$b->name}
   {/foreach}
{/if}

б) подсчитать кол-во всех товаров на сайте:

{api module=products method=count_products var=count}
{$count}

Полезное:

Задача: получить в дочерней категории название (url, id и пр. данные) родительской категории:

{$category->path[0]->name}

convert

Описание: пересчет цены в базовую валюту и добавление разделителя запятых и тысяч

Пример: 

{$product->variant->price|convert}

Результат: 34 000

noFormat

Описание: пересчет цены в базовую валюту без форматирования

Пример: 

{$product->variant->price|noformat}

Результат: 34000

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

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

  • Вся документация по Smarty

UPD: описание обновлено 10.05.2023

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

Рекомендуем прочитать
  • Для удобства компаний, оказывающих только услуги или продающих товары и услуги, мы разработали одноименный модуль поддерживающий вложенность любого уровня

  • Зачастую требуется товары сопровождать доступными для скачивания файлами (напр.: инструкции, сертификаты и т.п.).

    Для этих целей используется функционал прикрепления файлов к товарам.

  • Блог в 5CMS позволяет группировать записи (посты) по разделам (одного уровня вложенности).

    А также реализован функционал хэштегов и комментирования записей в блоге.