Jump to content
SooR

SEO PRO и AJAX запросы

Recommended Posts

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем

public function validate() {

после добавляем

$this->detectAjax();

получается так

public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

  • +1 6

Share this post


Link to post
Share on other sites
1 час назад, SooR сказал:

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

 

Если запрос делать чистым javascript или jqwery ajax?

Share this post


Link to post
Share on other sites

Не важно, если есть заголовок HTTP_X_REQUESTED_WITH: xmlhttprequest

jQuery.ajax - это красивая обертка нативного XHR

Share this post


Link to post
Share on other sites

Я натыкался на момент что при включенном сеопро ajax запрос на ванильном js не отрабатывал, когда без включения сеопро - все было нормально

Вылечил добавлением 

к заголовку 

xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

полный код, вдруг понадобится

function getXmlHttp() {
    let xmlhttp;
    try {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {
            xmlhttp = false;
        }
    }

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }

    return xmlhttp;
}

function makeAjax(metodType, path, body, callback) {
    let getCallback = callback || function (data) {};
    let xhr = getXmlHttp();

    xhr.open(metodType, path, true);
    xhr.onload = function () {
        if (this.status == 200) {
            let data;
            try {
                data = JSON.parse(this.responseText);
            } catch (e) {
                data = this.responseText;
            }
            getCallback(data);
        } else {
            alert('Error: ' + this.status);
        }
    };
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.send(body);
}

В таком варианте отрабатывает на ура что post что get

  • +1 1

Share this post


Link to post
Share on other sites

вызов на моем примере из строящегося проекта

makeAjax('POST',
            'index.php?route=checkout/cart/add',
            'product_id=' + product_id + '&quantity=' + (typeof (quantity) != 'undefined' ? quantity : 1),
            function (json) {
                console.log(json)
                if (json.redirect) {
                    //document.location = json['redirect'];
                    if (elem) {
                        productView(product_id,
                            function () {
                                elem.classList.toggle('js_preloader');
                            });
                    }
                } else {
                    changeCartTotal();
                }
            });

 

Share this post


Link to post
Share on other sites

В данном случае заголовок есть, проблема не на стороне клиента.

Share this post


Link to post
Share on other sites

seo_pro - зло
 

Share this post


Link to post
Share on other sites
3 минуты назад, markimax сказал:

seo_pro - зло
 

не аргументировано

 

  • +1 1

Share this post


Link to post
Share on other sites

Интересно в какой момент seo pro становится злом?

Ведь альтернатив то в oc - нету.

Share this post


Link to post
Share on other sites
17 часов назад, chukcha сказал:

не аргументировано

 

 

13 часов назад, pimur сказал:

Интересно в какой момент seo pro становится злом?

Ведь альтернатив то в oc - нету.

Фрагментацией

Share this post


Link to post
Share on other sites
В 13.03.2019 в 03:07, pimur сказал:

Ведь альтернатив то в oc - нету.

вообще не понимаю, почему Даниэль к 2019 году еще не решил проблему дублей в дефолтном Опенкарте?

Share this post


Link to post
Share on other sites
34 минуты назад, Zetx сказал:

вообще не понимаю, почему Даниэль к 2019 году еще не решил проблему дублей в дефолтном Опенкарте?

По большому счету дубли ЧПУ не критичны
Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу
Почему Даниэль не сделал - потому что есть ХК "откуда пришли"

Share this post


Link to post
Share on other sites
По большому счету дубли ЧПУ не критичны
Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу
Почему Даниэль не сделал - потому что есть ХК "откуда пришли"
Ну да, толькоксть к примеру 10000 товарных карточек.
Что в итоге, бот потратит свои ресурсы и обойдет в 4,5 раз больше чем надо было.

Отправлено через Tapatalk

Share this post


Link to post
Share on other sites
35 минут назад, pimur сказал:

Ну да, толькоксть к примеру 10000 товарных карточек.
Что в итоге, бот потратит свои ресурсы и обойдет в 4,5 раз больше чем надо было.

Это другое дело, но в первую очередь он обойдет те канонические  страницы что  в индексе и ссылки которые доступны на сайте (никто же дубли ЧПУ не "располагает" (надеюсь все используют $this->url->link), разве что из производителей и поиска (который закрывается)) ;)
Так что по сути и здесь не критично. Так что по большому счету количество ЧПУ должно совпасть

Share this post


Link to post
Share on other sites
Это другое дело, но в первую очередь он обойдет те канонические  страницы что  в индексе и ссылки которые доступны на сайте (никто же дубли ЧПУ не "располагает" (надеюсь все используют $this->url->link), разве что из производителей и поиска (который закрывается))
Так что по сути и здесь не критично. Так что по большому счету количество ЧПУ должно совпасть
Марк пока сложно сказать как на самом деле.
Были у меня лично ровно 2 проекта.
Один очень развит, второй только начинал, вот на втором контент наполнение аналогично, правда запущен позже и карточек меньше. Но скоро не было, так как был на голом Опенкарт с сеоурл, трафик был - но в силу человеком часов я его дальше не развил, и точно щас не скажу, повлияло ли бы это или нет. Но с виду вроде и с него заказы были с только сео.


Поэтому сложно сказать, не проверив на деле.

Отправлено через Tapatalk

Share this post


Link to post
Share on other sites

Да и проекты в одной тематике с 1в 1 контентом просто на старом больше контента было, как следствие и продаж

Отправлено через Tapatalk

Share this post


Link to post
Share on other sites
В 14.03.2019 в 23:11, markimax сказал:

Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу

Каким образом поисковая система выберет канонически правильную релевантную страницу? Страница одна и та-же, только много разных ссылок на эту страницу.

Сanonical говорите? Рассказать для чего нужен canonical и что происходит при бездумном использовании?

Основное предназначение canonical указывать какую страницу отображать в результатах поиска при изменении адреса сайта с www на без www, с http на https, если страница доступна по ссылке с ЧПУ и без ЧПУ, если один и тот-же контент доступен по разным ссылкам для AMP страниц, HTML страниц и мобильных приложений (с указанием взаимосвязи страниц), Если страница опубликована в нескольких смежных разделах сайта тоже можно использовать canonical, но нельзя разрушать в хлам структуру сайта.

В Opencart все canonical страницы товаров в корне сайта! Т.е. ссылочной структуры нет, иерархии нет, а есть одна большая свалка в корне сайта. Точнее категории описывают структуру, но структура пустая... все товары в корне!

 

Основная задача SEO_PRO вовсе не ЧПУ, а построение ссылочной структуры сайта, мягкая переадресация (с минимальными просадками) при перестроении структуры. При переходе из рекомендуемых, бестселлеров и т.д. не схлопываются до корня сайта хлебные крошки. Как тебе тут поможет canonical?

Все что делает SEO_PRO соответствует рекомендациям поисковых систем.

 

Может "истинный" сяо шник хочет аргументированно опровергнуть мнение и рекомендации ПС?

Цитата

1. Поддерживайте четкую ссылочную структуру на сайте. Каждый документ должен относиться к своему разделу.

Цитата

4. Каждая страница должна иметь уникальный адрес (URL). Желательно, чтобы вид URL давал представление о том, что содержится на соответствующей странице.

Пруф Яндекс.Вебмастер: Структура сайта

 

Цитата

Создайте продуманную и логичную иерархию страниц.

Пруф Google: Рекомендации для веб-мастеров

 

Цитата

Используйте простую структуру каталогов

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

Цитата

Используйте один URL для каждого документа

Чтобы посетители не использовали разные URL для одного контента, у каждой страницы на сайте должен быть один уникальный адрес. Если посетители открывают один и тот же контент по разным ссылкам, настройте переадресацию 30132 с неканонических URL на основной. Также можно использовать канонический URL или атрибут rel="canonical"33, если переадресация невозможна.

Пруф Google: Руководство по поисковой оптимизации для начинающих

Share this post


Link to post
Share on other sites
В 12.03.2019 в 22:45, SooR сказал:

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем

public function validate() {

после добавляем

$this->detectAjax();

получается так

public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

Отличное рабочее решение, только после него невозможно в админке часть операций выполнить. Например, скопировать товар. Относится к Ocstore 3 в частности.

Share this post


Link to post
Share on other sites
15 минут назад, chinyaev сказал:

только после него невозможно в админке часть операций выполнить.

бред, причем здесь админка

Share this post


Link to post
Share on other sites
В 12.03.2019 в 20:45, SooR сказал:

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем

public function validate() {

после добавляем

$this->detectAjax();

получается так

public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

Огромное спасибо, долго искал решение работы ocFilter + seoPro на ocStore 3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TramplinStudio
      Поддержка осуществляется в Пн-Пт с 18:00 до 20:00 по МСК!
       
      Модификатор Fix Analytics List v1.0 by Tramplin Studio исправляет баг связанный с некорректным отображением списка модулей в разделе расширений "Аналитика" (или "Статистика") в версиях OpenCart/ocStore 2.2 и 2.3.
       
      В обновлении версии OC 2.2, в разделе аналитических расширений, для каждого отдельного магазина появились свои настройки. Это было очень полезным нововведением, но была допущена ошибка при формировании таблицы, которая была устранена лишь в версии OC 3.0.

      Как проявляется ошибка?
      Если у вас установлен только один аналитический модуль, скорее всего это простой базовый модуль "Google Analytics", то вы ничего не заметите. Однако если у вас установлен еще один модуль (например наш модуль "TS Yandex Metrika") или несколько, то доступны будут лишь магазины последнего в списке модуля. Магазины других модулей не отобразятся, их настройки будут не доступны. После установки модификатора Fix Analytics List вы сможете видеть все магазины, всех модулей. 


      Полезные советы:
      Если вы серьезно относитесь к конверсии вашего интернет-магазина и вам важно знать все о действиях посетителей, тогда наш модуль "TS Yandex Metrika" может быть вам очень полезен! С этим модулем вы сможете передавать сервису Яндекс.Метрика не только такие простые данные как переходы по ссылкам и клики, но и подробную информацию о посетителях сайта, данные электронной коммерции, а также настраивать цели для отслеживания конверсий, не прибегая к вмешательству в код сайта и не обладая глубокими познаниями в веб-разработке.
      -----------------------------------------------------------------------------------------------

      Смотреть DEMO админки (логин: demo, пароль: demo)

      -----------------------------------------------------------------------------------------------

      Инструкция по установке:
      Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кеш модификаторов.  
      Файлы не перезаписываются!
      Используется OCMod!

      -----------------------------------------------------------------------------------------------

      Данный модификатор является завершенным продуктом. Дальнейшее обновление модификатора маловероятно.
    • By TramplinStudio
      Скачать/Купить дополнение


      TS Fix Analytics List
      Поддержка осуществляется в Пн-Пт с 18:00 до 20:00 по МСК!
       
      Модификатор Fix Analytics List v1.0 by Tramplin Studio исправляет баг связанный с некорректным отображением списка модулей в разделе расширений "Аналитика" (или "Статистика") в версиях OpenCart/ocStore 2.2 и 2.3.
       
      В обновлении версии OC 2.2, в разделе аналитических расширений, для каждого отдельного магазина появились свои настройки. Это было очень полезным нововведением, но была допущена ошибка при формировании таблицы, которая была устранена лишь в версии OC 3.0.

      Как проявляется ошибка?
      Если у вас установлен только один аналитический модуль, скорее всего это простой базовый модуль "Google Analytics", то вы ничего не заметите. Однако если у вас установлен еще один модуль (например наш модуль "TS Yandex Metrika") или несколько, то доступны будут лишь магазины последнего в списке модуля. Магазины других модулей не отобразятся, их настройки будут не доступны. После установки модификатора Fix Analytics List вы сможете видеть все магазины, всех модулей. 


      Полезные советы:
      Если вы серьезно относитесь к конверсии вашего интернет-магазина и вам важно знать все о действиях посетителей, тогда наш модуль "TS Yandex Metrika" может быть вам очень полезен! С этим модулем вы сможете передавать сервису Яндекс.Метрика не только такие простые данные как переходы по ссылкам и клики, но и подробную информацию о посетителях сайта, данные электронной коммерции, а также настраивать цели для отслеживания конверсий, не прибегая к вмешательству в код сайта и не обладая глубокими познаниями в веб-разработке.
      -----------------------------------------------------------------------------------------------

      Смотреть DEMO админки (логин: demo, пароль: demo)

      -----------------------------------------------------------------------------------------------

      Инструкция по установке:
      Перейдите в Панель администратора -> Модули -> Установка расширений; Загрузите архив с модулем для вашей версии OpenCart или ocStore; Обновите кеш модификаторов.  
      Файлы не перезаписываются!
      Используется OCMod!

      -----------------------------------------------------------------------------------------------

      Данный модификатор является завершенным продуктом. Дальнейшее обновление модификатора маловероятно.
      Добавил TramplinStudio Добавлено 28.07.2019 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2 ocStore 2.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет Старая цена 0  
    • By AlexDW
      Третьего дня столкнулся с непонятным:
      при удалении обычного дополнения через установщик и загрузке его обновленной версии на боевой сайт - ряд других дополнений превращались в "кирпич", а движок начинал ругаться на отсутствие части файлов, связанных с ними.
       
      Вариант с "кривым" дополнением был отброшен изначально, т.к.
      а) собственно и являюсь автором дополнения
      б) создано согласно стандартам движка и не в первый раз; структурно не отличается от других
      в) перед загрузкой прошло полную обкатку на тестовом окружении
       
      В процессе препарации выяснилось, что виновник - штатный деинсталлятор дополнений в Opencart 3x
       
      При установке любого дополнения в тройке - информация о содержащихся в нем файлах и папках записывается в смежные таблицы oc_extension_install и oc_extension_path
      И при удалении через штатный деинсталлятор - относящиеся к дополнению файлы и папки удаляются именно на основе этих данных

      При создании дополнений многие авторы используют отдельные папки, общие для файлов своих дополнений (например для своих библиотек в system/library, скриптов в catalog/view/javascript и тд)
      или используют универсальные файлы, содержащиеся в каждом их дополнении
       
      Беда в том, что в процессе удаления совершенно не учитывается возможность использования этих файлов и папок другими дополнениями.

      Фактически:
      1. Если ряд дополнений использует свою собственную общую папку, которой нет в движке по умолчанию - такая папка создается при установке первого дополнения и привязывается к нему в таблице oc_extension_path в момент создания.
      При этом, при установке последующих дополнений, использующих данную папку - привязки не происходит, так как папка уже есть
      Но при удалении именно того дополнения, к которому произошла привязка папки - ПАПКА БУДЕТ УДАЛЕНА СО ВСЕМ СОДЕРЖИМЫМ БЕЗ КАКОЙ-ЛИБО ПРОВЕРКИ
      т.е. со всеми другими файлами, которые могут не иметь отношения к удаляемому дополнению, и используют эту общую папку для хранения своих файлов.
       
      2. Если в ряде дополнений используются какие-либо общие файлы (например универсальные вспомогательные классы, библиотеки и тд) - удаление такого дополнения через деинсталлятор приведет к удалению этих общих файлов
      Ладно, если пользователь переустанавливает или ставит новую версию дополнения, содержащую эти же файлы - тогда они просто будут добавлены заново.
      В случае же, если дополнение просто удаляется за ненадобностью или в его новой версии уже нет таких файлов - их отсутствие просто приведет к неработоспособности всех использующих их модулей.
       
      На текущий момент данная проблема актуальна для всех движков третьей ветки (3000-3031) и сборок на их основе (включая ocStore 3020)
      И судя по исходникам на гите - еще и для беты 3100 (хотя в ней и добавили проверку перед удалением папки, но проверки на уникальность самих файлов по-прежнему нет)
       
      лекарство здесь
       
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.