Предлагаю внести небольшие корректировки в shopkeeper.class.php

Create issue
Issue #17 resolved
Nikolay created an issue

Когда делал ИМ наткнулся на пару моментов, которые испортили жизнь. Пришлось лезть в класс шопкипера и разбираться с логикой его работы, а потом внести пару правок. Правки такие:

 //OnSHKcalcTotalPrice
        $new_price = $this->getFromEvent( 'OnSHKcalcTotalPrice', array( 'price_total' => self::$price_total ), 'float' );
        if( $new_price !== false ){
            $my_price = self::$price_total;
            self::$price_total = $new_price;
        }         

        //Добавляем цену доставки
        if( !empty( $this->delivery ) && !empty( $this->delivery['price'] ) ){
            self::$price_total += $this->delivery['price'];
        }  

Поменял эти 2 условия if, чтобы в плагин передавалась цена без учёта доставки, т.к. доставка есть доставка, думаю в большинстве случаев её в скидках учитывать не надо. Скидки обычно рассчитываются от суммы товаров без учёта доставки.

И вот ещё кусок кода:

public function getCartContent()
    {

        $mainChunk = $this->getChunk( $this->config['cartTpl'] );
        $chunk_parts = $mainChunk->get('snippet') ? explode('<!--tpl_separator-->',$mainChunk->get('snippet')) : array();

        $output = '';

        $OnSHKbeforeCartLoad = $this->getFromEvent( 'OnSHKbeforeCartLoad', array(), 'string' );

        $this->getTotal(); 

Последнюю строку добавил сам. Это чтобы при каждом обновлении корзины данные в ней были всегда актуальны. Т.е. я в плагине OnSHKbeforeCartLoad произвожу какие-то действия меняющие стоимость товаров в сессии $_SESSION['shk_order']. А без этой строки, цены при ajax обновлении корзины берутся старые неактуальные. Актуальные становятся только после перезагрузки страницы. В итоге, получается куча глюков, и можно долго разбираться откуда они берутся.

Если первое предложение может быть будет спорным, то 2-е довольно актуальное, уже два раза напарывался, первый раз кучу времени убил, но так и не понял в чём беда. А во второй раз уже разобрался, но на поиск решения тоже ушло много времени.

Писал о проблеме на форуме - http://modx-shopkeeper.ru/forum/viewtopic.php?pid=23202

Comments (1)

  1. Log in to comment