Как добавить дополнительные поля на страницу товара в phpshop

06.02.2019

Нужно было вывести дополнительную информацию товару если его цена менее 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 с которого тестируем.


Пометки: не phpshop сниппет, генерация товара.
Яндекс.Метрика