Есть у меня в обслуживании интернет магазин, который находится на одном из самых популярных cms Worpress с соответствующим расширением. Какое-то время назад появлялась полоска Яндекс Маркета вверху экрана, предлагающая такой же товар из своего каталога, но по более низкой цене. То появлялась, то исчезала, поэтому бороться как-то не получалось. В последнее время Советчик поселился основательно, поэтому вопрос о его избавлении встал особо остро. Тут получается эдакий убийца интернет магазина, не избавишься и все потенциальные покупатели уйдут.

По сути Советник ведёт себя как вирус, например в Яндекс браузере он вшит и там с ним бороться бесполезно, а в остальных браузерах он идёт как самостоятельное расширение, так и в купе с другими, что вызывает особое негодование. Если взять меня в пример, то когда я ставил расширение, то у него не было в нагрузке никакого советника, а появился он благодаря обновлению продукта...

По поводу поиска расширения с которым он идёт я не буду расписываться, можно воспользоваться Гуглом. По поводу его отключения у себя в браузере можно сходить в сам яндекс. А вот на том как избавится от него на страницах вашего магазина мы и остановимся.

В интернете я нашёл целую гору информации и мало практических решений, не беря во внимание, конечно же, платные варианты. Ну там просто дикость какая-то, цены как будто они мне не только скрипт продают, а целиком с сайтом... :%)
Есть несколько бесплатных скриптов, но основная проблема заключается в том, что этот Советник постоянно улучшается/обновляется и скрипты попросту перестают работать, вы можете не успеть отследить этот момент и часть потенциальных покупателей уйдёт к конкурентам.

Я решил пойти сразу двумя путями, и я не знаю почему до меня никто не пошёл по этому же пути, т.е. добавить как скрипт, так и стили скрывающие полоску советчика.
Скрипт который у меня заработал:

Код: Выделить всё

<script type="text/javascript">
// Ya block
(function(open) {  
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
      
        this.addEventListener("readystatechange", function() {  
        
      var parser = document.createElement('a')
      parser.href = url;
      if( parser.hostname == 'sovetnik.market.yandex.ru' ) {
        this.abort();
        console.log('KILL YANDEX SOVETNIK!')
        }
            
        }, false);  
        open.call(this, method, url, async, user, pass);
    };  
})(XMLHttpRequest.prototype.open);
</script>
Сколько он проработает не известно. Поэтому дополняем его стилями, которые, в случае если скрипт не перестанет отрабатывать, скроют панель:

Код: Выделить всё

/* Ya block */
html[style*="margin-top: 38px !important;"] {
	top: -38px;
}
body > div[style*="top: 0px !important;position: fixed !important;"] {
	overflow: hidden;
	height: 0;
}
Тут отрабатывает очень простая схема: стили находят блочный элемент div со стилями имеющими top: 0px !important;position: fixed !important;, и находящегося непосредственно в теле body, т.е. не вложенного ещё в какой-то элемент. То же самое с html, когда советчик опускает содержимое страницы на 38px, мы возвращаем её обратно с помощью top: -38px;.
Визуально всё останется как раньше, никакой панели не будет и, даже с учётом отсутствия скрипта, пользователи ничего не увидят и не уйдут с сайта.

Вот собственно и всё.
Комментарии: 2

southklad 03 сен 2017, 21:57 Сообщение

А куда вставлять?
  • 0
Изображение

CabinetAdmin 04 сен 2017, 17:29 Сообщение

Ну как, скрипт в структуру перед </head>, а стили в стилевой файл.
  • 1
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Похожие темы