Главная  >  Документация  >  Статьи и инструкции  >  Использование сниппетов

Статьи и инструкции: Использование сниппетов

Для чего нужны сниппеты?


Сниппеты позволяют интегрировать любой ваш PHP и HTML-код непосредственно в среду визуальной верстки для написания собственных решений (например, вывести список страниц универсального модуля).


Сниппет всегда воспринимается компилятором как PHP-код, поэтому для исполнения PHP-скриптов обязательно наличие PHP-тегов (в стандартной конфигурации включена поддержка коротких тегов <? и ?>), но как и в любом php-файле вы также можете использовать HTML-теги.

Пример простейшего сниппета для получения списка страниц и их ID:


<?

$items = $this->smartriver->page(['where' => ['confirm' => 1]]);


if($items['status'] == 'ok'){

    ?>

    <ul>

        <?

        foreach($items['response'] as $item){

            ?>

            <li><?=$item['name'].' (ID '.$item['id'].')'?></li>

            <?

        }

        ?>

    </ul>

    <?

}

?>


Сниппеты бывают двух типов: произвольные и виджеты.


Произвольные сниппеты не взаимодействуют с окружающей средой визуальной верстки и всегда остаются в рамках заданных высоты и ширины (необходимо, когда контент должен быть статичным), виджеты же, наоборот, взаимодействуют со средой визуальной верстки и могут увеличиваться или уменьшаться по высоте, при этом толкая объекты (необходимо при построении списков и других подобных элементов).


Также в сниппеты можно передавать параметры (делается это через элемент визуальной верстки, перечисление параметров идет через запятую).


Получить эти параметры в сниппете можно через символ #. Все параметры лучше присваивать в начале кода, во избежание непредвиденных ситуаций.



Пример сниппета с параметрами:


<?
$param_1 = #param_1;

$param_2 = #param_2;

$param_3 = #param_3;


print_r($param_1);

print_r($param_2);

print_r($param_3);

?>

$param_1, $param_2, $param_3 - это переменные, которые вы будете использовать в своем PHP коде, #param_1, #param_2, #param_3 - это своего рода теги параметров, переданных через визуальную верстку, неважно как вы их назовете (но, рекомендуется аналогично php-переменным, чтобы не было путаницы), важен лишь порядок, т.е. #param_1 идет первым в визуальной верстке, #param_2 - вторым и т.д.

Для получения ID текущей страницы (раздела, новости, товара и т.д.) необходимо использовать свойство $this->id. Оно доступно для использования в любом сниппете. Например, чтобы получить данные текущей страницы, на которой размещен созданный Вами сниппет, достаточно вызвать метод


$this->smartriver->page(['where' => ['id' => $this->id]]);

Каждый сниппет является изолированной сущностью, поэтому для использования переменных из одного сниппета в другом, следует включать в логику объект $this->storage и помещать в него необходимые свойства, например:    


$this->storage->param1 = 'test';

Также предусмотрено свойство $this->module, используемое для получения названия модуля, и свойство $this->element для получения текущего объекта.

Была ли полезна для вас статья?

Мы используем файлы Cookie, чтобы сделать работу с сайтом проще и удобнее. Нажимая кнопку «Принять Cookie» или продолжая просмотр сайта, вы даете согласие на использование cookie и счетчика Яндекс.Метрика для обработки персональных данных. Более подробная информация тут

Cookies в CMS Smart Engine