Последние темы


Кэшируется корзина shopkeeper3

  • А о каком плагине идет речь?

    Покажите какие у вас установлены.

  • Плагин LastModified нужно отключить (или настроить). Вы сами не знаете что вы устанавливаете и зачем?

  • @Andchir Удалил его, все равно кешируется(

  • Участник @wordbuilder1312 написал в Кэшируется корзина shopkeeper3:

    @Andchir Удалил его, все равно кешируется(

    Может кэш не почистили. После такого плагина нужно чистить кэш в MODX и в браузере. Для проверки можно использовать гостевой (приватный) режим в браузере.

  • Отключил кэшируемость в админке, очистил кэш, почистил кэш в папке core. В итоге, через вкладку инкогнито корзина стала работать лучше, но все равно местами кешируется, местами нет. Через пару дней переношу файлы на хостинг, может подождать и посмотреть. Если будет работать некорректно, снова Вам написать?

  • @Andchir Андрей, добрый день. перенес сайт на хостинг с опенсервера, теперь корзина не то чтобы кешируется, она вообще не работает:(
    На хостинге можно сменить версию php (от 5.2 до 7) - менял, не помогает. При чем корзина себя странно ведет.При добавлении товара в корзину - он улетает как нужно, но в малой корзине пропадает значок корзины и количество товаров, отображается только цена: http://prntscr.com/mwqvln, http://prntscr.com/mwqwfe
    Ссылка на сайт: belvinograd.by
    В разделе "Саженцы" можно протестировать корзину
    Могу также доступ к админке дать.
    Помогите, пожалуйста.

  • Забыл сказать, на страницу оформления не переходит, текущая страница просто перезагружается.
    На хостинге ничего не делал, просто перенес сайт.

  • Читайте документацию и форум, смотрите видео уроки. Вы хотите чтобы за вас всё кто-то сделал?
    Для начала нужно избавиться от JS ошибок (смотреть в консоль браузера).

  • Всмысле за меня? Почему вы постоянно грубите? Если ваш компонент некорректно работает, почему я не могу обратиться в поддержку? Форумы постоянно читаю, в том числе этот. Но если сайт компонент работает на одном хостинге но по магическим причинам не работает на другом, когда все остальное работает, что я должен делать?

  • Я не грубил, а только указал, что вы слишком много хотите. Зачем вы мне предлагаете доступ к админке, чтобы я за вас там всё сделал, а Вы не утруждали себя предоставлением информации? Задавайте конкретный вопрос и ждите ответа. Если вопросов много, то лучше их пронумеровать.

    Если ваш компонент некорректно работает

    Я открыл ваш сайт и первое, что увидел, это JS ошибки, которые не относятся к шопкиперу, а относятся к какому-то слайдеру. То, что у вас локально всё работает, а на сервере не работает для меня эта информация лишняя, она ничего не дает.

  • Здравствуйте, проблему с кешированием решил. Но столкнулся с другой проблемой. Не появляются заказы в "Управление заказами" и на почту приходят полупустые сообщения (http://prntscr.com/n73fc2). Не передаются параметры: "[[+orderID]]" и "[[+orderOutputData]]". В админке в заказх тоже пусто.
    Товары в корзину добавляются, корзина наполняется, на страницу оформления заказа переходит, после заполнения формы, редиректит на страницу "Спасибо за заказ". Письмо приходит (скрин выше). Но в админке пусто и пустые поля в письме на почте

    Страница оформления заказа: http://prntscr.com/n73h47
    ShopOrderForm: http://prntscr.com/n73hf8
    ShopOrderReport:http://prntscr.com/n73hun
    Большая корзина (bigCart):http://prntscr.com/n73i6a
    Что-нибудь еще скинуть?
    Подскажите, пожалуйста, в чем ошибка
    Ссылка на сайт belvinograd.by
    Заранее спасибо!!

  • Здравствуйте, проблему с кешированием решил.

    Как решили можете поделиться? Недавно тоже такое видел.

    Не появляются заказы в "Управление заказами" и на почту приходят полупустые сообщения

    Нужно проверить сниппет "shk_fihook". Вроде он по умолчанию статичный, но, если у вас изменено название папки "core", то могут быть проблемы. Нужно сделать этот сниппет не статичным, вставить код и сохранить.

  • @Andchir На самом деле ничего сверхъестественного. Действовал так, как Вы советовали.

    1. Сначала убрал session_handler_class
    2. Отключил плагин LastModified

    Вот что еще попробовал:

    1. Отключал кэшируемость чанков
    2. Отключал кэшируемость вообще (в системных настройках)

    Все равно ничего не помогало
    Потом поменял версию php (у меня на хостинге можно от 5.3 до 7 переключать), очистил core (cache), переподключил базу данных и заработало.

  • @Andchir Залез в сниппет shk_fihook (я кстати в нем ничего не менял и не трогал, так как в php не силен). Путь вроде бы корректный, сниппет не статичный: http://prntscr.com/n79f3s
    Вот где находится сам шопкипер: http://prntscr.com/n79fna (вроде все стандартно.

    Код сниппета (еще раз повторюсь ничего не трогал):

    <?php
    /**
     * FormIt hook for Shopkeeper 3.x
     */
    
    //ini_set('display_errors',1);
    //error_reporting(E_ALL);
    
    $output = false;
    
    if(!defined('SHOPKEEPER_PATH')){
        define('SHOPKEEPER_PATH', MODX_CORE_PATH."components/shopkeeper3/");
    }
    
    //Определяем параметры сниппета Shopkeeper
    $sys_property_sets = $modx->getOption( 'shk3.property_sets', $modx->config, 'default' );
    $sys_property_sets = explode( ',', $sys_property_sets );
    $propertySetName = trim( current( $sys_property_sets ) );
    
    $snippet = $modx->getObject('modSnippet',array('name'=>'Shopkeeper3'));
    $properties = $snippet->getProperties();
    if( $propertySetName != 'default' && $modx->getCount( 'modPropertySet', array( 'name' => $propertySetName ) ) > 0 ){
        $propSet = $modx->getObject( 'modPropertySet', array( 'name' => $propertySetName ) );
        $propSetProperties = $propSet->getProperties();
        if(is_array($propSetProperties)) $properties = array_merge($properties,$propSetProperties);
    }
    
    $lang = $modx->getOption( 'lang', $properties, 'ru' );
    $modx->getService( 'lexicon', 'modLexicon' );
    $modx->lexicon->load( $lang . ':shopkeeper3:default' );
    
    if( !empty( $_SESSION['shk_order'] ) ){
        
        require_once SHOPKEEPER_PATH . "model/shopkeeper.class.php";
        $shopCart = new Shopkeeper( $modx, $properties );
        
        $modx->addPackage( 'shopkeeper3', SHOPKEEPER_PATH . 'model/' );
        
        //shopkeeper settings
        $contacts_fields = array();
        $response = $modx->runProcessor('getsettings',
            array( 'settings' => array('contacts_fields') ),
            array( 'processors_path' => $modx->getOption( 'core_path' ) . 'components/shopkeeper3/processors/mgr/' )
        );
        if ($response->isError()) {
            echo $response->getMessage();
        }
        if($result = $response->getResponse()){
            
            $temp_arr = !empty( $result['object']['contacts_fields'] ) ? $result['object']['contacts_fields'] : array();
            if( !empty( $temp_arr ) ){
                
                foreach( $temp_arr as $opt ){
                    
                    $contacts_fields[$opt['name']] = $opt;
                    
                }
                
            }
            
        }
        
        $userId = $modx->getLoginUserID( $modx->context->key );
        if( !$userId ) $userId = 0;
        
        //Контактные данные
        $contacts = array();
        $allFormFields = $hook->getValues();
        foreach( $allFormFields as $key => $val ){
            
            if( in_array( $key, array_keys( $contacts_fields ) ) ){
                
                $temp_arr = array(
                    'name' => $contacts_fields[$key]['name'],
                    'value' => $val,
                    'label' => $contacts_fields[$key]['label']
                );
                
                array_push( $contacts, $temp_arr );
                
            }
            
        }
        
        $contacts = json_encode( $contacts );
        
        $emailField = $modx->getOption( 'fiarToField', $hook->config, 'email' );
        $phoneField = $modx->getOption( 'phoneField', $hook->config, 'phone' );
        $deliveryField = $modx->getOption( 'deliveryField', $hook->config, 'shk_delivery' );
        $paymentField = $modx->getOption( 'paymentField', $hook->config, 'payment' );
        
        //Доставка
        $delivery_price = !empty( $shopCart->delivery['price'] ) ? $shopCart->delivery['price'] : 0;
        $delivery_name = !empty( $shopCart->delivery['label'] ) ? $shopCart->delivery['label'] : '';
        if( !$delivery_name ){
    	$delivery_name = !empty( $allFormFields[$deliveryField] ) ? $allFormFields[$deliveryField] : '';
        }
        
        //Сохраняем данные заказа
        $order = $modx->newObject('shk_order');
        $insert_data = array(
            'contacts' => $contacts,
            'options' => '',
            'price' => Shopkeeper::$price_total,
            'currency' => $shopCart->config['currency'],
            'date' => strftime('%Y-%m-%d %H:%M:%S'),
            'sentdate' => strftime('%Y-%m-%d %H:%M:%S'),
            'note' => '',
            'email' => isset( $allFormFields[$emailField] ) ? $allFormFields[$emailField] : '',
            'delivery' => $delivery_name,
            'delivery_price' => $delivery_price,
            'payment' => isset( $allFormFields[$paymentField] ) ? $allFormFields[$paymentField] : '',
            'tracking_num' => '',
            'phone' => isset( $allFormFields[$phoneField] ) ? $allFormFields[$phoneField] : '',
            'status' => $modx->getOption( 'shk3.first_status', null, '1' )
        );
        if( $userId ){
            $insert_data['userid'] = $userId;
        }
        $order->fromArray($insert_data);
        $saved = $order->save();
        
        //Сохраняем товары заказа
        if( $saved ){
    
            $purchasesData = $shopCart->getProductsData( true );
    
            foreach( $shopCart->data as $key => $p_data ){
    
                $options = !empty( $p_data['options'] ) ? json_encode( $p_data['options'] ) : '';
                $fields_data = !empty( $purchasesData[ $key ] ) ? $purchasesData[ $key ] : array();
                $fields_data['url'] = !empty( $p_data['url'] ) ? $p_data['url'] : '';
                unset( $fields_data['id'] );
                $fields_data_str = json_encode( $fields_data );
    
                $insert_data = array(
                    'p_id' => $p_data['id'],
                    'order_id' => $order->id,
                    'name' => $p_data['name'],
                    'price' => $p_data['price'],
                    'count' => $p_data['count'],
                    'class_name' => $p_data['className'],
                    'package_name' => $p_data['packageName'],
                    'data' => $fields_data_str,
                    'options' => $options
                );
    
                $purchase = $modx->newObject('shk_purchases');
                $purchase->fromArray( $insert_data );
                $purchase->save();
    
            }
    
            $shopCart->setOrderDataSession( $order->toArray() );
    
        }
        
        $modx->invokeEvent( 'OnSHKChangeStatus', array( 'order_ids' => array( $order->id ), 'status' => $order->status ) );
        
        $orderOutputData = $shopCart->getOrderData( $order->id );
        
        //OnSHKsaveOrder
        $evtOut = $modx->invokeEvent('OnSHKsaveOrder',array('order_id' => $order->get('id')));
        if(is_array($evtOut)) $orderOutputData .= implode('',$evtOut);
        
        $hook->setValues(array(
            'orderID' => $order->get('id'),
            'orderDate' => $order->get('date'),
            'orderPrice' => $order->get('price'),
            'orderCurrency' => $shopCart->config['currency'],
            'orderOutputData' => $orderOutputData
        ));
        
        $shopCart->request_empty( false );
        
        $output = true;
        
    }else{
        
        $hook->addError( 'error_message', $modx->lexicon('shk.order_empty') );
        $output = false;
        
    }
    
    return $output;
    
  • Может есть какой-то плагин на событие "OnSHKsaveOrder".

  • @Andchir С плагинами тоже ничего не делал:(
    Как я понял у корзины (http://prntscr.com/n7dim5) с формой отправки данных (http://prntscr.com/n7dj5q) связь есть, потому что если в корзине товаров нет и я пытаюсь ввести данные в форму и отправить их, вылазит сообщение - http://prntscr.com/n7di44
    То есть, можно предположить, что все связано корректно. Но ничего не приходит:(

  • Может происходит какая-то ошибка. Смотрите журнал ошибок и логи.

  • @Andchir Большое спасибо за наводку. Сам не додумался залезть в логи. В итоге нашел корень проблемы. После оформления заказа приходит такая ошибка:

    INSERT INTO modx_shopkeeper3_orders (contacts, options, price, currency, date, sentdate, note, email, delivery, delivery_price, payment, tracking_num, status) VALUES ('[{"name":"fullname","value":"Marcus Firespider","label":"\u0418\u043c\u044f"},{"name":"email","value":"wordbuilder1312@gmail.com","label":"\u0410\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b"},{"name":"phone","value":"+375(22)222-22-22","label":"\u0422\u0435\u043b\u0435\u0444\u043e\u043d"},{"name":"message","value":"wfwf","label":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"}]', '', '13', 'BYN', '2019-04-05 09:24:31', '2019-04-05 09:24:31', '', 'wordbuilder1312@gmail.com', '', '0', '', '', '1')
    Array
    (
    [0] => 42S02
    [1] => 1146
    [2] => Table 'user2070964_grapedb.modx_shopkeeper3_orders' doesn't exist
    )

    За которой следует множество одинаковых строк:
    [2019-04-05 09:24:30] (ERROR @ /home/user2070964/www/belvinograd.by/core/xpdo/xpdo.class.php : 503) Path specified for package virtunewsletter is not a valid or accessible directory: /home/user2070964/www/belvinograd.by/core/components/virtunewsletter/model/

    Я понял, что таблица shopkeeper-orders не существует. Зашел в phpmyadmin и убедился: ее там действительно нет. Вероятно что-то сломалось, когда переносил файлы на хостинг. Другого объяснения найти не могу.

    Можно как-нибудь без переустановки shopkeeper добавить эту таблицу и связать ее?
    Очень не хочется все заново переустанавливать, большая работа проделана.

    Спасибо.

  • Вот запрос для создания таблицы, только проверьте префикс:

    CREATE TABLE IF NOT EXISTS `modx_shopkeeper3_orders` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `contacts` text,
      `options` text,
      `price` float DEFAULT '0',
      `currency` varchar(10) DEFAULT '',
      `date` datetime DEFAULT NULL,
      `sentdate` datetime DEFAULT NULL,
      `note` text,
      `email` varchar(40) DEFAULT '',
      `delivery` varchar(40) DEFAULT '',
      `delivery_price` float DEFAULT '0',
      `payment` varchar(40) DEFAULT '',
      `tracking_num` varchar(40) DEFAULT '',
      `status` varchar(40) DEFAULT '',
      `userid` int(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
 

Последние комментарии

  • Начать нужно с документации. Потом открыть файл конфигурации. Потом можно на форуме почитать темы, связанные с CatalogFill.

    Читать далее
  • R

    А как это сделать? Прошу прощения за тупые вопросы, но как я уже писал, я в этом не разбираюсь. Там тоже нужно настраивать файл конфигурации?

    Читать далее
  • Я тоже не знаю как это сделать. Компонент на такое не рассчитан. Можно конвертировать значение в нужный вам формат через функцию "filter_import".

    Читать далее
  • R

    Вы правы я даже не пытался потому что я в этом новичок и профан, я совершенно не понимаю что нужно править в конфигурационных файлах. Я готов заплатить за то что бы вы как специалист мне помогли и настроили все что нужно. Скрин прайслиста прилагаю. Если нужно еще что то предоставить напишите пожалуйста что нужно, потому что как я уже сказал я не разбираюсь в том что вам необходимо для того что бы оказать мне помощь. 0_1568555336747_123.jpg

    Читать далее