Design Hook Price Format

Материал из PHPShop

Перейти к: навигация, поиск

Требуется отформатировать цену у товара для разделение тысяч (10 200 руб.).

Форматирование цены раздела /shop/ произведем через дизайн хук класса PHPShopShop и метода price().

Инструкция:

  • Создать файл phpshop/templates/имя шаблона/php/hook/priceformat.hook.php с содержанием
<?php
/**
* Форматирование цены
*/
function price_format_hook($obj, $row, $newprice) {
 
    // Если есть новая цена
    if (empty($newprice))
        $price = $row['price'];
    else
        $price = $row['price_n'];
 
    $price = number_format(PHPShopProductFunction::GetPriceValuta($row['id'], array($price, $row['price2'], $row['price3'], $row['price4'], $row['price5']), $row['baseinputvaluta']), 2, '.', ' ');
    return $price;
}
 
 
 
$addHandler=array
        (
        'price'=>'price_format_hook',
);
 
?>
  • Создать файл phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
 
[hook]
phpshopshopcore="php/hook/priceformat.hook.php";


Форматирование цены элементов новинок и спецпредложений произведем через дизайн хук класса PHPShopProductElements и метода price().

Инструкция:

  • Создать файл phpshop/templates/имя шаблона/php/hook/priceformatelement.hook.php с содержанием
<?php
/**
* Форматирование цены
*/
function price_formatelement_hook($obj, $row, $newprice) {
 
    // Если есть новая цена
    if (empty($newprice))
        $price = $row['price'];
    else
        $price = $row['price_n'];
 
    $price = number_format(PHPShopProductFunction::GetPriceValuta($row['id'], array($price, $row['price2'], $row['price3'], $row['price4'], $row['price5']), $row['baseinputvaluta']), 2, '.', ' ');
    return $price;
}
 
 
 
$addHandler=array
        (
        'price'=>'price_formatelement_hook',
);
 
?>
  • Создать файл phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
 
[hook]
phpshopproductelements="php/hook/priceformatelement.hook.php";
 Lifebelt.png Если старая цена и новая цена при выводе будут одинаковы, то следует заменить строку в файле phpshop/class/shopcore.class.php
    /**
     * Стоимость товара
     * @param array $row массив данных товара
     * @param bool $newprice изменилась цена
     * @return float
     */
    function price($row, $newprice = false) {
 
        // Перехват модуля, занесение в память наличия модуля для оптимизации
        if ($this->memory_get(__CLASS__ . '.' . __FUNCTION__, true)) {
            $hook = $this->setHook(__CLASS__, __FUNCTION__, $row, $newprice);  // Заменить