Уважаемые форумчане. Как известно в Prestashop используется шаблонизатор Smarty. А у меня возникла необходимость вывести ряд переменных. Вот так я переменную инициализирую: Код: {assign var=hard value=$product} Потом я её вывожу, а потом мне надо её деинициализировать, то есть "уничтожить", чтобы она не выводилась повторно. И вот с этим неожиданно возникли проблемы! В документации мне всё-таки удалось найти функцию, которая деинициализирует переменную: Код: <?php $smarty->clear_assign('hard'); ?> Но функция clear_assign реализована там в php-тегах, а мне надо работать с переменной в tpl-файле, а не в php! И попытки избавится от тегов php и записать clear_assign, в том же виде как assign: Код: {clear_assign hard} или вот так: Код: {php} $smarty->clear_assign('hard'); {/php} приводят только к неработоспособности сайта. Подскажите, пожалуйста, кто знает, как деинициализировать переменную в tpl-файле smarty?
{assign var='hard' value=''} хотя если у вас возник такой вопрос, то меняйте логику приложения - коренная ошибка
Спасибо. Получилось сделать вот так: {$hard = null} Ну а насчёт коренной ошибки... По моему она в самом Prestashop. Ну и, мне, соответственно, приходится выкручиваться. Как в престе реализуется массив характеристик ($product.features)?. Индексно! То есть по номеру! Хоть бы введённое программистом название характеристики использовали. Ан нет, только номер. А характеристик может быть 5, а может быть 10. Что у товара под номером, скажем, 5, этого массива? У одного товара это размер, у другого гарантия, а у третьего - ничего. А мне нужно только определённые характеристики в категорию вывести! Причём каждой обеспечить своё место и вид. Скажем гарантия должна быть с листиком справа, а размер сверху, с квадратиком. И как это совместить с индексным подходом престы? Менять их логику, их классы? У меня знаний не хватает. Вот и приходится в ответ на их недоработку добавлять свои. Названия характеристик в шаблон tpl вводить (что совсем не есть хорошо), переменные уничтожать... Кстати, в престе вообще плохо налажена работа в этом отношении. Переделала товары и удалила (не в товарах, а вообще) ненужные мне атрибуты. Поехал вывод цены в тех товарах, где ... эти атрибуты остались. Но ведь ... должно быть предусмотрено в движке, что если атрибут используется, то он либо неудаляем, либо, уж тогда и из товара должен удалиться. Этого не произошло. А из корзины товар с несуществующим атрибутом не удалить никаким Богом! Пришлось саму эту корзину удалять.
Для того и существует в престе возможность override практически всего, что реализовано классами и контроллерами, плюс модули и хуки. Делайте как вам нравится, если не нравится основной функционал. В шаблонах реализовывать логику работы нельзя, рано или поздно аукнется.
О, спасибо за override. Правда, знаний для серьёзных модификаций пока нет, но хотя бы буду знать в каком направлении "копать"