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

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

Прописал наборы параметров для нового языка. В итоге все отображается как задумано, но вот возникла проблемка с работой 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 было разорвано, подождите, пока мы пытаемся восстановить соединение.