Вывод скидки в карточке товара (TPL) — различия между версиями
Alexei (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.5''' Задача - вывести скидку на товар (независимо от цены, т.е., к при…») |
(нет различий)
|
Текущая версия на 12:25, 28 марта 2014
Актуально для версии 2.9.5
Задача - вывести скидку на товар (независимо от цены, т.е., к примеру, название скидки или ее описание) в карточке товара - точно также, как она выводится в корзине товаров. Для решения данной задачи воспользуемся кастомным макросом. В директории /classes/modules/emarket/ в файл __custom.php необходимо добавить следующий код:
public function fullDiscountInfo($elementId = null, $template = 'discount_info') {
if(!$elementId) return null;
$hierarchy = umiHierarchy::getInstance();
$elementId = $this->analyzeRequiredPath($elementId);
if($elementId == false) {
throw new publicException("Wrong element id given");
}
$element = $hierarchy->getElement($elementId);
if($element instanceof iUmiHierarchyElement == false) {
throw new publicException("Wrong element id given");
}
list($tpl_block, $tpl_block_empty) = def_module::loadTemplates("emarket/discounts/".$template, 'discount_block', 'discount_block_empty');
$discount = itemDiscount::search($element);
$result = array(
'attribute:element-id' => $elementId
);
if(!($discount instanceof discount)) return def_module::parseTemplate($tpl_block_empty, $result);
$result['void:name'] = $discount->getName();
$result['void:description'] = $discount->getValue('description');
$result['void:discount_id'] = $discount->id;
return def_module::parseTemplate($tpl_block, $result);
}
Теперь необходимо добавить шаблон discount_info.tpl в папку /tpls/emarket/discounts/ . В самом шаблоне пропишите следующий код:
<?php
$FORMS = array();
$FORMS['discount_block'] = <<<END
Название скидки - %name%, ее описание - %description%
END;
$FORMS['discount_block_empty'] = <<<END
Скидки нет
END;
?>
Далее, необходимо дать права на использования данного макроса. Для этого нужно создать файл permissions.custom.php в директории /classes/modules/emarket/ со следующим содержанием:
<?php
$permissions = array('purchasing' => array('fullDiscountInfo'));
?>
Параметры: emarket fullDiscountInfo($elementId, $template)
$elementId
Передаем id товара
$template
Передаем шаблон отображения.
Вывод информации осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, тогда для вывода будет использован шаблон по умолчанию — discount_info.tpl.
Используемые шаблоны
Макрос оперирует шаблонами, находящимися в каталоге /tpls/emarket/discounts/
Используемые блоки шаблона
discount_block
Блок оформления описания скидки.
%name%
Название скидки.
%description%
Описание скидки.
%discount_id%
Идентификатор скидки.
discount_block_empty
Используется в том случае, если необходимо вывести на страницу сообщение о том, что у товара нет скидки.