7

在产品列表中,我需要一次显示含税和不含税的产品价格。

我正在使用 Prestashop 的 1.6 版。

目前含税价格显示在产品列表中。我也想显示不含税的价格。

我怎样才能做到这一点?我一直在寻找解决方案,但找不到适合我的解决方案。

4

5 回答 5

9

在 中找到以下块product-list.tpl

{foreach from=$products item=product name=products}

添加此以显示不含税的价格:

{convertPrice price=$product.price_tax_exc}

确保在开发过程Template compilation中设置为Force compilation并在 PrestaShop 后台 -> -> Cache中设置为。NoAdvanced ParametersPerformance

于 2014-04-23T09:05:34.090 回答
2

在我的情况下,它适用于默认税,不包括:

{convertPrice price=$product->getPrice(false, $smarty.const.NULL)} ({l s='tax excl.'})
于 2014-10-05T19:54:27.243 回答
2

我知道已经有一个公认的答案,但我需要更多关于如何获得产品价格的信息。

Prestashop 内置产品类具有 getPrice 方法。

/**
* Get product price
* Same as static function getPriceStatic, no need to specify product id
*
* @param bool $tax With taxes or not (optional)
* @param int $id_product_attribute Product attribute id (optional)
* @param int $decimals Number of decimals (optional)
* @param int $divisor Util when paying many time without fees (optional)
* @return float Product price in euros
*/
public function getPrice($tax = true, $id_product_attribute = null, $decimals = 6,
    $divisor = null, $only_reduc = false, $usereduc = true, $quantity = 1)
{
    return Product::getPriceStatic((int)$this->id, $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity);
}

如您所见,您可以指定是否需要税收、作为结果给出的小数位数以及除数。

因此,如果您想通过 ID 获取产品价格(含税和不含税),您可以像这样实现

$product = new Product($id_product, $id_language) // Fill with your info
$price_with_taxes = $product->getPrice(true);
$price_wout_taxes = $product->getPrice(false);

正如其他评论所说,如果您在模板中,则可以根据您正在修改的视图获取产品 ID。

在 product.tpl(单一产品视图)中有一个 $product 变量。在 product-list.tpl 中有 $products 变量,这是一个包含列表中显示的所有产品的数组。

希望这可以帮助。

于 2017-12-11T12:52:57.493 回答
0

我在结帐前的订单列表中有类似的问题。错误消息显示不含税的总金额和产品金额。所以我在第 63 行修改了 controllers > front > OrderController.php (PS 1.6) 中的文件

// Check minimal amount
    $currency = Currency::getCurrency((int)$this->context->cart->id_currency);

    $orderTotal = $this->context->cart->getOrderTotal();
    $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency);   

    if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) {
        $_GET['step'] = $this->step = 0;
        $this->errors[] = sprintf(  
            Tools::displayError('A minimum purchase total of %1s (tax excl.) is required to validate your order, current purchase total is %2s (tax excl.).'),
            Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS), $currency)    
        );                      
    }

使用以下代码

// Check minimal amount
    $currency = Currency::getCurrency((int)$this->context->cart->id_currency);

    $orderTotal = $this->context->cart->getOrderTotal();
    $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency);

    # modified (total amount included tax - only for screen error)

    $minimal_purchase_2 = round(Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency)*1.22,1);       
    $productTotal = round($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)*1.22,1);

    if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) {
        $_GET['step'] = $this->step = 0;
        $this->errors[] = sprintf(                 
            Tools::displayError('A minimum purchase total of %1s (tax incl.) is required to validate your order, current purchase total is %2s (tax incl.).'),  
            Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($productTotal, $currency)
        );                      
    }

我必须解决才能获得实际税值(此时我为意大利税值插入 1.22)。

最后,您必须在本地化中翻译新句子。希望有人可以完成或更好地解决这个问题。

于 2016-04-22T14:42:05.700 回答
-1

简单的解决方案

转到客户 -> 组,然后单击要修改的组上的编辑:

找到价格显示方法选项并根据需要选择包含或排除的价格,然后保存更改:

按 ctrl + f5 检查。完毕

于 2016-11-05T13:12:17.730 回答