Не добавляется товар в корзину ошибка 500



  • Вдруг при добавлении товара в корзину стала возникать ошибка 500 в файле assets/components/shopkeeper3/connector_fe.php. В логах на сервере ничего нет при этом и в админке Modx тоже. В чем может быть проблема?



  • Разобрался с чем связано. Связано дело было с таким вот плагином канонической переадресации (он делает редирект для ресурса контейнера если в адресной строке ввести адрес например site.ru/containerpage на страницу site.ru/containerpage/ для исключения дублей, так как стандартная настройка не работает сейчас у самой modx):

    <?php
    if ($modx->event->name != 'OnLoadWebDocument') {return;}
    
    $uri = $modx->resource->get('uri');
    $request = ltrim(urldecode($_SERVER['REQUEST_URI']), '/');
    if (strpos($request, '?') !== false) {
    	list($request, $params) = explode('?', $request);
    }
    else {
    	$params = '';
    }
    
    if (!empty($request) && mb_strtolower($request, 'UTF-8') != mb_strtolower($uri, 'UTF-8')) {
    	if (!empty($params)) {
    		$uri .= '?' . $params;
    	}
    	$modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
    }
    

    Может кто подскажет как его доработать, чтобы корзина shopkeeper 3 стала работать с ним (добавление товаров). Думаю он всем будет полезен, так как и на демо сайте дубли для ресурсов контейнеров есть, а это минус для seo.


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

    плагином канонической переадресации

    Впервые слышу такое понятие. Есть понятие - каноническая ссылка. Переадресация там не нужна.

    https://support.google.com/webmasters/answer/139066?hl=ru



  • @Andchir Беру сведения из modx friendly_urls_strict и там указано что будет редирект на канонический URI, вот он и не работает никогда, даже если настройка включена. Об этом даже уже давно есть запись на github у modx. Google кстати тоже ругается на это, как на дубли. Говорю о своем сайте. Есть ресурсы контейнеры и у них ссылка работает как site.ru/контейнер/ так и site.ru/контейнер. В данном случае title и так далее одинаковые и для Google и Яндекс это дубли. Настройка friendly_urls_strict должна делать в данном случае редирект с site.ru/контейнер на ресурс site.ru/контейнер/ но modx не делает этого. Вот этот плагин и решает эту проблему, но он конфликтует с shopkeeper, так как повешен на тоже событие OnLoadWebDocument, вешал на событие OnWebPagePrerender и тогда нормуль. На демо сайте shopkeeper данная проблема дублей тоже есть, кстати.



  • @Andchir И по вашей ссылке на документацию Google переадресация с кодом 301 (редирект) там в рекомендациях есть.



  • @anton83 Добрый день, а что это за плагин такой? Если дадите ссылочку, постараюсь с кодом на выходных разобраться.

    Тут вроде просто все.



  • @slaad https://modx.pro/help/5105/ А плагин я уже описал, что нужен для seo, чтобы устранить для поисковиков дубли типа site.ru/index.php site.ru/ресурс_контейнер и одновременная доступность site.ru/ресурс_контейнер/. Системные настройки modx данную проблему не утсраняют. Modx игнорирует получается системную настройку friendly_urls_strict, хотя для таких случаев, как site.ru/ресурс_контейнер для ресурсов контейнеров должен делать с включенной настройкой friendly_urls_strict редирект на site.ru/ресурс_контейнер/. Этот плагин и устраняет этот недостаток, но на событии OnLoadWebPage конфликтует с shopkeeper (товары не добавляются в корзину)



  • Событие не правильно указал только OnLoadWebDocument.


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

    Участник @anton83 написал в Не добавляется товар в корзину ошибка 500:

    @Andchir И по вашей ссылке на документацию Google переадресация с кодом 301 (редирект) там в рекомендациях есть.

    Не вижу там слова "рекомендация". Это только один из вариантов. А я пишу про другой вариант, без переадресации https://support.google.com/webmasters/answer/139066?hl=ru#2

    Понятия "каноническая переадресация" нет. Есть два варианта: переадресация с заголовком 301 и каноническая ссылка.



  • @Andchir Хорошо, не правильно выразился. Плагин реализует 301 редирект на канонический адрес.


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

    Плагин реализует каноническую ссылку через 301 редирект.

    Опять не правильно.

    Вдруг при добавлении товара в корзину стала возникать ошибка 500 в файле assets/components/shopkeeper3/connector_fe.php. В логах на сервере ничего нет при этом и в админке Modx тоже. В чем может быть проблема?

    Значит плохо ищите. 500 это обычная ошибка на сервере, она должна быть в логах на сервере. Так же можно попробовать в админке включить режим debug.



  • @Andchir В логах на сервере ничего не отображает. Выяснил только одно, что если включить на событие OnWebPagePrerender то нормально тогда.



  • С сервером у меня у хостера не настроено было логирование. Сделал. Выдает такую вот ошибку:
    PHP Fatal error: Uncaught Error: Call to a member function get() on null in /home/s/shamarus/nobleedge.ru/public_html/core/cache/includes/elements/modplugin/68.include.cache.php:4
    Stack trace:
    #0 core/model/modx/modscript.class.php(70): include()
    #1/core/model/modx/modx.class.php(1608): modScript->process()
    #2 /assets/components/shopkeeper3/connector_fe.php(22): modX->invokeEvent('OnLoadWebDocume...')
    #3 {main}
    thrown in /core/cache/includes/elements/modplugin/68.include.cache.php on line 4
    В файле shopkeeper на строке 22 так вызов события системного идет $modx->invokeEvent("OnLoadWebDocument");
    Конфликт получается идет.


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

    Выше вы писали:

    Выяснил только одно, что если включить на событие OnWebPagePrerender то нормально тогда.

    Если всё нормально, то почему вы продолжаете писать в этой теме?



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