Как сделать простой расчет для продуктов prestashop в foreach Smarty?
в настоящее время я работаю над модулем котировок для моего Prestashop 1.7.5. Я добавил цены на продукты (путем переопределения продукта.РНР.)
И теперь, я должен сделать некоторые расчеты, когда предложение генерируется / отображается, чтобы добавить эти цены к общей сумме продуктов и общей сумме заказа.
С помощью простого foreach в шаблоне, у меня есть все мои цены.
{foreach $products as $product}
{$product.service}
{/foreach}
ВЫХОД
0,30 € 0,10 € 0,20 €
Но я хочу, чтобы эти числа добавляли себя друг к другу (например, здесь в общей сложности 0,60€).
Кстати, я знаю, что мы должны делать это в php-файлах, а не в шаблоне (я тоже пробовал этот способ, но очень сложный...). И мне не нужно сохранять эти цифры, это просто для отображения...
Есть идеи ?
Спасибо ;)
Ответы - Как сделать простой расчет для продуктов prestashop в foreach Smarty? / How to make simple calculation for prestashop products in foreach Smarty?

04.09.2019 07:24:42
Следующее будет обрабатывать его. В первом блоке я имитирую ваши данные, чем я запускаю точно такой же foreach
из вашего вопроса, чтобы сравнить вывод.
Наконец, в третьем блоке я покажу вам код для расчета общей суммы, а также формат вывода в виде денег.
{* Sample code to simulate your data *}
{assign var="products" value=[
['service' => '0,30 €'],
['service' => '0,10 €'],
['service' => '0,20 €']
]}
{* Original code, exactly as showed in the question *}
{foreach $products as $product}
{$product.service}
{/foreach}
{* This is the new code for calculating the total *}
{assign var="total" value=0}
{foreach $products as $product}
{assign var="total" value=$total + $product.service|replace:' €':''|replace:',':'.'}
{/foreach}
Total: {$total|number_format:2:",":''} €
Выход:
0,30 € 0,10 € 0,20 € Total: 0,60 €
Но, как вы уже знаете, это очень хаки, и, как правило, не должны обрабатываться внутри шаблона, по следующим причинам:
- Это очень хрупко, чтобы сделать замену строк, как описано выше, чтобы удалить знак евро из
service
(например, сохраните его как "€0,30 "вместо" 0,30 €", достаточно, чтобы сломать логику суммирования.
