Не работает корзина на мультиязычном сайте



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

    Прописал наборы параметров для нового языка. В итоге все отображается как задумано, но вот возникла проблемка с работой JS, в частности корзины.

    При нажатии на кнопку "добавить в корзину" создается эффект flyout, но не появляется корзина. В инспекторе вижу ошибку, что невозможно найти файл:

    site.ru/en/assets/components/shopkeeper3/connector_fe.php
    

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

    Необходима ваша помощь, в каком файле могу прописать абсолютный путь до этого файла? Сайт уже на рабочем домене.


  • Администраторы

    Мультиязычность делали по какому-то примеру или самостоятельно?
    Надо исправить чтобы

    $modx->config['base_url']
    

    Выдавал корень сайта.



  • У меня как раз base_url только для основного контекста, языковые версии имеют контексты /en/ и т.д.
    alt text



  • Как я понимаю необходимо править все файлы, прописывая абсолютный адрес корня сайта для всех файлов Shopkeeper?


  • Администраторы

    Можно узнать зачем меняете base_url и почему без этого нельзя обойтись?



  • Ну сайт на одном домене, без использования дополнительных папок. Используя данный способ реализовано переключение контекстов.


  • Администраторы

    Переключение контекста можно сделать с помощью плагина "shk_contextSwitch". Там не нужно менять base_url.



  • Пока не могу найти документации по работе с плагином shk_contextSwitch.
    Погуглил по вариантам переключения контекстов, во всех примерах разные base_url, соотвествующие culture key. Пока не удалось найти вариантов реализации переключения контекстов на одном домене без смены base_url. Может просто не смог найти....


  • Администраторы

    Вот ещё плагин, вроде идет в комплекте с Шопкипером. Надо в контексте создать папку с алиасом, например "en". Плагин смотрит этот алиас как родительский и переключает контекст. Т.е. все документы должны быть внутри этой папки либо заморозить URL.

    <?php
    
    /**
     * OnHandleRequest
     *
     */
    
    switch($modx->event->name){
        
        case "OnHandleRequest":
            
            $contexts = $modx->getOption('contexts', null, 'en,de');
            $contexts = array_map( 'trim', explode(',',$contexts) );
            
            $request_uri = substr($_SERVER['REQUEST_URI'],0,1)=='/' ? substr($_SERVER['REQUEST_URI'],1) : $_SERVER['REQUEST_URI'];
            if( strpos( $request_uri, '/' ) !== false ){
                $lang_key = substr( $request_uri, 0, strpos( $request_uri, '/' ) );
            }else{
                $lang_key = $request_uri;
            }
            
            if( in_array( $lang_key, $contexts ) ){
                
                $modx->reloadContext( $lang_key );
                $modx->switchContext( $lang_key );
                $modx->setOption( 'cultureKey', $lang_key );
                
            }
            
        break;
    }
    
    return '';
    


  • Не понял...в контексте создать папку, это как? Прописать параметр? Физически контекстов нет в FTP.



  • Мне проще было бы поменять $modx->config['base_url'] во всех файлах Shopkeeper, прописав абсолютный путь с именем домена.

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

    Пробовал создавать папку с названием контекста, ложить туда файлы Shopkeeper, но сайт сразу вылетает с 500 ошибкой....


  • Администраторы

    Не понял...в контексте создать папку, это как? Прописать параметр? Физически контекстов нет в FTP.

    Ресурс-контейнер.



  • Ну такой вариант не подойдет, слетят все УРЛы проиндексированных страниц.


  • Администраторы

    Ну такой вариант не подойдет, слетят все УРЛы проиндексированных страниц.

    Это смотря как вы сделаете. По-моему слететь ничего не должно.

    Но вы можете для контекстов создать параметр "my_base_url" со значением "/". И в коде сниппета Shopkeeper3 все

    $modx->config['base_url']
    

    заменить на

    $modx->getOption('my_base_url')
    


  • Вот это решение отлично сработало. Проблема решена. Огромное спасибо!



  • не знаю, есть связь или нет, но через день корзина на сайте пропала вообще.
    Наверно после обновления кеша...
    Сейчас при нажатии на кнопку ДОБАВИТЬ В КОРЗИНУ, в консоле вылетает ошибка - http://www.site.eu/assets/components/shopkeeper3/connector_fe.php 500 (Internal Server Error)


  • Администраторы

    По любой ошибке можно найти информацию в логе.



  • В логе Журнал ошибок MODX нет записей....


  • Администраторы

    @moduser сказал Не работает корзина на мультиязычном сайте:

    В логе Журнал ошибок MODX нет записей....

    Значит надо искать лог PHP ошибок на сервере. Может где-то в панеле хостинга.



  • После удаления папки CACHE. стали появляться ошибки в логе MODX^

    /core/model/phpthumb/modphpthumb.class.php : 117) phpThumb was unable to generate a thumbnail for: /core/cache/phpthumb/__src6eabc29df670f5b4b0ee6144f87c7051_par397327b300e2532553c171cb19a456f3_dat0.jpeg
    
    /core/model/phpthumb/modphpthumb.class.php : 129) Error outputting thumbnail:
    OutputThumbnail() failed because !is_resource($this->gdimg_output) in file "phpthumb.class.php" on line 572
    
    

    Попробовал отключить вывод фото в корзине, но пока не помогает. Корзина не появляется на сайте.



Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.