Webasyst Shop-Script 3: Разный дизайн для разных категорий

В ситуации, когда товар по какой-либо причине недоступен, предупредить об этом пользвателя штатными средствами Shop-Script несложно. Другое дело, когда возникает необходимость не только предупредить позьзователя об отсуствии определнных категорий товаров, но и вывести для него ссылку на актуальные позиции, без использования редиректа. Ниже я расскажу, как это сделать.

Допустим, у нас есть несколько категорий, в описании которых, нужно вывести какой-либо текст со ссылкой. Описания в любых других категориях остаются неизменными.

Для начала, определяемся с номером категории, в котором будет отображаться наш текст. Как это сделать, я описывал в этой статье. Далее, идем в админпанель магазина -> дизайн -> редактировать шаблон -> редактировать HTML-код -> продукт. Здесь внимательно смотрим в код, и решаем, в каком месте будет выводиться информация. Если сразу под названием товара, то вставлять код будем после

{cpt_product_name overridestyle=''}

Тут стоит сделать небольшое отступление. Smarty позволяет сделать различный дизайн как строго для одной категории товаров, так и для нескольких. Потому приведу несколько примеров.
Текст, отображаемый только для одной конкретной категории:

{if $smarty.get.categoryID eq ХХХ} <!-- ваш html-код для категории ХХХ --> {/if}

Текст, отображаемый только для двух конкретных категорий:

{if $smarty.get.categoryID eq ХХХ || $smarty.get.categoryID eq УУУ} <!— ваш html-код для категорий ХХХ и УУУ —> {/if}

Текст, отображаемый только для категории и всех подкатегорий в ней:

{if $product_category_path[1][0] eq ХХХ} <!— ваш html-код для категории ХХХ и всех подкатегорий в ней —> {/if}

Далее, нам нужно вывести ссылку на актуальные категории товаров. В случае с одной ссылкой всё просто — вставки её в html-код будет достаточно. Но если ссылки будут в каждой категории разные, нужен плагин который будет их генерировать. Написать и подключить его к шаблону будет несложно, даже с минимальными знаниями php.
Для этого: в каталоге kernel/includes/smarty/plugins/ создаем файл с именем function.имя_вашего_плагина.php
В файле делаем следующую заготовку:

<?php function smarty_function_имя_вашего_плагина ($params, &$smarty){ } ?>

Аргументы $params и &$smarty необязательные — их нужно указывать в следующих случаях (хотя можно всегда писать по умолчанию, большой беды от них не будет):
$params если вы хотите, чтобы плагин отображал разное содержимое в зависимости от значений дополнительных параметров (например, categoryID открытой категории);
&$smarty если вы хотите использовать поля или методы объекта $smarty, например, считывать значения переменных, доступных в текущем шаблоне, или отображать сгенерированные PHP-кодом данные с помощью шаблона Smarty.

Далее на php дописываем заготовку так, чтобы порлучилась проверка условий вроде:

если категория = ХХХ то <выводим ссылку>
иначе если категория = ХХХ то <выводим ссылку>

Сохраняем php-файл, идем снова в редактирование шаблона продукта, там добавляем: (опять же, в том месте шаблона, где вы хотете чтобы ссылка отображалась):

{имя_вашего_плагина}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

2 × 4 =