Автор Тема: Как понять, что создано правило корзины из карточки товара  (Прочитано 117 раз)

03 Июля 2015, 12:45:00
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Создал правило корзины, под определённый промо код.
На карточке товара хочу вывести надпись под данную акцию.
Существует ли в $product или в $cart какой либо параметр, чтобы я знал, что правило корзины создано.

Например для Правила каталога условие в карточке товара следующее:
if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}

Как понять, что создано правило корзины из карточки товара (product.tpl)?
03 Июля 2015, 12:59:41
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
В заказе для этого есть переменная $voucherAllowed.
'voucherAllowed' => CartRule::isFeatureActive(),
03 Июля 2015, 13:04:52
Ответ #2
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В заказе для этого есть переменная $voucherAllowed.

Спасибо за ответ, как можно достучаться до этой переменной из product.tpl?
03 Июля 2015, 13:16:00
Ответ #3
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Правильно будет в ProductController.php

перед $this->setTemplate(_PS_THEME_DIR_.'product.tpl');

добавить
'voucherAllowed' => CartRule::isFeatureActive()???

 
03 Июля 2015, 13:16:55
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
Да. Добавить в контроллер переменную шаблона smarty "voucherAllowed".
03 Июля 2015, 13:18:55
Ответ #5
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да. Добавить в контроллер переменную шаблона smarty "voucherAllowed".

Спасибо, кроме (да/нет) 'voucherAllowed' => CartRule::isFeatureActive()
Можно вытащить другую информацию например описание или промо код?
03 Июля 2015, 13:42:40
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
Можно, все поля класса можно вытащить
/classes/CartRule.php
$code;
$description;
и т..д.
03 Июля 2015, 16:59:28
Ответ #7
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вобщем всё перебробывал.
Помогла следующая комбинация
В контроллере
'definition' => CartRule::getCustomerCartRules(1, 0, true),
В product.tpl
{assign var="access" value="0"}
{foreach from=$definition item=foo}
{if $foo.id_cart_rule == 13}
{assign var="access" value="1"}
{/if}
{/foreach}
где 13 id моей акции

если
$access == 1то акция действует
что то делаем в шаблоне,

да CartRule::isFeatureActive() всегда равен 1
я так понял этот параметр показывает разрешена работа с промокодоми на сайте или нет...
03 Июля 2015, 18:08:23
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1207
  • Репутация: +29/-1
  • Сообщество PrestaShop
    • Просмотр профиля
isFeatureActive при установке равен 0. Значение берется из константы PS_CART_RULE_FEATURE_ACTIVE.
При разрешении купонов и если есть активные скидки значение PS_CART_RULE_FEATURE_ACTIVE меняется на 1.