Стоит задача реализовать систему бонусов. Готовых модулей не нашел по этому поводу и начал делать сам. Уперся в некоторое непонимание.
На страницах корзины в шаблонах доступны через смарти данные заказа, например цена: {$Order.sum}
Хотел в этот же order засунуть еще два поля. Упоминания формирования этого дела накопал в классах getdata корзины.
думал добавления в массив по аналогии двух последних полей sumBonus и isEnable должно решить вопрос
public function outputArray(array $array, $count = false){<br />
$result = parent::outputArray($array, $count);<br />
<br />
$result['sum'] = $this->sum;<br />
$result['original_sum'] = $this->original_sum;<br />
$result['discount'] = $this->discount;<br />
$result['quantity'] = $this->quantity;<br />
$result['positions'] = $count;<br />
$result['sumBonus'] = $this->sumBonus;<br />
$result['isEnable'] = '123';<br />
<br />
return $result;<br />
}
Но похоже этого совсем не достаточно. Может быть кто-то знает как правильно (или хотя бы в каких местах искать следы) изменять содержимое этого результирующего массива $Order?
Спасибо!
Алексей Смирнов 16.06.2017 21:53 #
SnowLynx 16.06.2017 23:44 #
у меня есть шаблон корзины. в нем при помощи смарти используется массив. (на шаблоне прямо среди html указывается например {$Order.sum} и в итоге на странице мы видим число которое было в массиве $Order под «именем» sum). массив формируется в пхп, очевидно. я нашел место которое, предположительно, формирует массив. и для проверки пробую в него затолкать еще один элемент равный константе. действую по аналогии с тем что уже написано в классе. потом на шаблоне пытаюсь применить: {$Order. isEnable} но при входе на страницу заложенного значения нет. в том месте где оно должно быть пусто. значит я что-то не верно делаю при увеличении количества элементов массива или не учитываю какую то инициализацию этих полей. и вот тут как раз вопрос куда можно посмотреть по этому поводу?
SnowLynx 16.06.2017 23:42 #
Алексей Смирнов 17.06.2017 10:21 #
Я чувствую что вы пошли каким-то сложным путем, но вы не написали свою задумку, а написали узкую задачу конкретную. Может, быть, есть более простой путь.<br />
Я не работал с shopModx. Посмотрите есть ли у него системные события, например на рендеринг корзины или изменение корзины, изменения товара в корзине. События есть в плагинах. На minishop2 такой проблемы нет. Может, еще не поздно сменить дополнение для магазина?
SnowLynx 17.06.2017 10:36 #
По итогу конечной суммы. Я сначала пытался сделать по другому, через сниппеты. в итоге попал в ситуацию, когда изменение количества товара не обновляет страницу а меняет только значение суммы и других параметров, то есть и сниппеты не вызываются повторно.
в общем конкретно эта часть задачи выглядит примерно так:
расчет и отображение количества бонусных баллов на странице корзины. дальше надо будет сделать, что бы при формировании заказа пользователь мог увидеть итоговую сумму и опять же — ему начислились баллы. И он мог списать свои в счет заказа (1 балл = 1 рубль ). я в итоге пришел к выводу что единожды засунув числа в тот же массив, из которого берется общая стоимость, я смогу достать его и на той и на этой странице и проводить действия не через сниппеты. вот и полез в процессоры.) сами методы вычисления и взятия из базы я уже проверил в консоле. да и не суть, ведь я даже константу не могу достать из того массива по аналогии, пока что )