Нужно было вывести дополнительную информацию товару если его цена менее 5 000р.
Думал сделать это использую стисему хуров / сниппетов, но опять их API не сошлось с документацией.
Тест
Первым делом я решил вставиться в файлы в шаблоне.
Нашел, что на странице товара вызывается phpshop/templates/soelitcoolers/php/hook/phpshopshop.hook.php функция function template_UID($obj, $dataArray, $rout) {
Надежда была на то, что в $obj передается информация о текущем элементе.
Оказалось, что нет. Там просто вся инфа о текущем соединении с БД, есть информация о товаре, в $obj->SysValue['other']['productDayPrice'], но это какой-то рандомный товар, его даже в коде станичницы нет.
$dataArray - всегда был пустой, а вот $rout содержит не URL или что-то подобное, а START, MIDDLE, оказывается, что это позиция в родительской функции, откуда ее вызвали (if ($this->setHook(__CLASS__, __FUNCTION__, null, 'START'))).
Решение
Прописался в файл, который гененрирует товар (/phpshop/core/shop.core.php)
class PHPShopShop - function UID() {
Добавил:
if ($row['price'] > 5000)
{
$this->set('soIsTheDeliveryFree2', '<div class="free"><b>Доставим бесплатно!</b></div>');
}
Бонус:
Код можно отлаживать код через:
@php
if ($_SERVER['REMOTE_ADDR'] == 'X.X.X.X')
{
print_r(debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
}
php@
- где X.X.X.X, IP с которого тестируем.