Fatal error - при модификации цены
Написал скрипт модификатора цены, на старом хостинге всё работало безупречно. После переноса на новый — белый экран.
Добавил
Сам сниппет увеличивает цену на указанный процент (это наряду с плагином модификации цены в корзине).
Код сниппета следующий:
Добавил
ini_set('display_errors',1);Теперь выходит ошибка Fatal error: Call to a member function get() on a non-object in /home/v/******/public_html/core/cache/includes/elements/modsnippet/106.include.cache.php on line 8Ругается на:$product->get('price');Сам сниппет увеличивает цену на указанный процент (это наряду с плагином модификации цены в корзине).
Код сниппета следующий:
<?php
ini_set('display_errors',1);
$getprice = $product->get('price');
$procent = isset($scriptProperties['procent'])? $procent: 0;
$price = isset($scriptProperties['price'])? $price: $getprice;
$price = str_replace(" ","",$price);
$price2 = $price/100;
$procent = $price2*$procent;
$price = $price + $procent;
echo $price;Вывожу сниппет на каточке товара:[[!procent?&procent=`20`]] Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Проще сделать модификатор procent на плейсхолдер [[+price]] из этого сниппета
docs.modx.pro/system/basics/filters-input-and-output
Модифицировал сниппет procent и вызвал его как модификатор (проценты хранятся в настройках контекста):
Почему есть разница в выводе результатов этого скрипта и плагина-модификатора корзины?
Допустим реальный пример:
с помощью сниппета procent выводится цена в 5968 руб., а в корзину добавляется 5991 руб.!
Код вроде везде идентичный…
Код плагина:
Значит вместо [[+price:procent=`2`]], мне нужно переписать сниппет и вызывать его так: [[+id:procent=`2`]]?
В таком случае как лучше залезть в базу за ценой товара, зная его ID?
Логика, на первый взгляд, верна. Но возможно, прикол в приведении типов. Вероятно, что в [[+price]] содержится не число, а строка (отформатированная цена, содержащая пробел).
добавил перевод из строки в число:
Результат всё тот же: сниппет показывает цену в 200 руб., а в корзину добавляет 223 руб.!
В 90% случаях цена товара совпадает с ценой в корзине. На оставшиеся 10% товаров пока не хочу смотреть, чтобы не было мучительно больно… =(