Как отобразить цену продукта с налогом и без налога одновременно в списке продуктов для Prestashop?

в списке продуктов мне нужно отобразить цену продукта с налогом и без него одновременно.

Я использую версию 1.6 Prestashop.

сейчас цена включая налог отображается в списке продуктов. Я хочу также отобразить цену без учета налога.

Как я могу это сделать? Я искал решение и не смог найти рабочее решение для меня.

5 ответов


найти следующий блок product-list.tpl:

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

добавьте это для отображения цены без налога:

{convertPrice price=$product.price_tax_exc}

убедитесь, что во время разработки Template compilation установлено значение Force compilation и Cache установлено значение No в бэк-офисе PrestaShop ->Advanced Parameters ->Performance.


в моем случае он работает для налога по умолчанию, кроме.:

{convertPrice price=$product->getPrice(false, $smarty.const.NULL)} ({l s='tax excl.'})

у меня есть аналогичная проблема в списке заказов перед оформлением заказа. В сообщении об ошибке отображается общая сумма и сумма продукта без налога. Поэтому я изменил файл в controllers > front > OrderController.php (PS 1.6) В строке 63

// 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 для налоговой стоимости Италии).

В конце вы должны перевести в локализации нового предложения. Надеяться кто-то может завершить или лучше решить этот вопрос.


Я знаю, что уже есть один принятый ответ, но мне нужна была дополнительная информация о том, как получить цену продукта.

встроенный класс продукта 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);

Как другие комментарии говорят, если вы находитесь внутри шаблона, вы можете получить идентификатор продукта в зависимости от вида изменения.

в продукт.TPL (единый вид продукта) существует переменная $product. В списке продуктов.tpl у вас есть переменная $products, массив, содержащий все продукты, отображаемые в списке.

надеюсь, что это помогает.


простое решение

перейдите к Customers - > Groups и нажмите Edit на группе, которую вы хотите изменить:

найти метод отображения цены вариант и выберите цена включена или исключена, как вы хотите затем Сохранить изменения:

проверьте нажатием ctrl + f5. Сделал