Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Отключить ЯндексКарту


 Поделиться

Рекомендованные сообщения

Добрый вечер! На сайте где-то в модулях доставки подключена ЯндексКарта. Эта карта тормозит загрузку сайта. Можно ли ее отключить со всех страниц кроме чекаута?

Спойлер

1406568283_PageSpeedInsights.png.ec50dd70f7f40ece7801ee04b89adbc8.png

Вот полная ссылка на скрипт https://yastatic.net/s3/front-maps-static/front-jsapi-v2-1/2.1.77-27/build/release/full-d3f34cc99c9c0dd436b9bc268e8dd6c17d0c711a.js

Ссылка на комментарий
Поделиться на других сайтах


Вот нашел в коде страницы

<link href="//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap" rel="preload" as="script">

<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap" type="text/javascript"></script>

Получается сдэк подключает эту карту. Но зачем она на всех страницах нужна. Можно ли убрать ее?

Ссылка на комментарий
Поделиться на других сайтах


27 минут назад, Andrew18 сказал:

Но зачем она на всех страницах нужна.

Хороший вопрос к разработчику модуля доставки. Скорее всего там модификатор добавляет подключение прямо в header.twig

Уберите и добавте только на странице оформления или в twig файле модуля доставки

Ссылка на комментарий
Поделиться на других сайтах

@Seriusis Разработчику написал письмо, жду ответ.

В модификаторе нет ничего

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <code>CDEK</code>
  <name>CDEK opencart</name>
  <version>1.4.7.6</version>
  <author>OpenCart.ru</author>
  <link>http://www.opencart.ru</link>
  <file path="catalog/view/theme/*/template/checkout/shipping_method.twig">
    <operation>
      <search><![CDATA[{{ quote.text }}]]></search>
      <add position="after"><![CDATA[{% if quote.description is not empty %}{{quote.description}}{% endif %}]]></add>
    </operation>
  </file>

  <file path="admin/controller/common/column_left.php">
    <operation>
      <search><![CDATA[$catalog = array();]]></search>
      <add position="before" offset="1"><![CDATA[// CDEK OCMOD START
      // CDEK
      $cdek = array();
      $cdek[] = array(
        'name'     => 'Отгрузка в СДЭК',
        'href'     => $this->url->link('extension/module/cdek_integrator', 'user_token=' . $this->session->data['user_token'], true),
        'children' => array()
      );
      $cdek[] = array(
        'name'     => 'Расчет доставки',
        'href'     => $this->url->link('extension/shipping/cdek', 'user_token=' . $this->session->data['user_token'], true),
        'children' => array()
      );
      $cdek[] = array(
        'name'     => 'Наложенный платеж',
        'href'     => $this->url->link('extension/payment/cod_cdek', 'user_token=' . $this->session->data['user_token'], true),
        'children' => array()
      );
      $cdek[] = array(
        'name'     => 'Учитывать в заказе',
        'href'     => $this->url->link('extension/total/cdek', 'user_token=' . $this->session->data['user_token'], true),
        'children' => array()
      );

      $cdek_other = array();
      $cdek_other[] = array(
        'name'     => 'Документация',
        'href'     => 'http://cdek.opencart.ru/documentation',
        'children' => array()
      );
      $cdek_other[] = array(
        'name'     => 'Поддержка',
        'href'     => 'http://helpdesk.opencart.ru',
        'children' => array()
      );
      $cdek_other[] = array(
        'name'     => 'Лицензия',
        'href'     => $this->url->link('tool/cdektool', 'user_token=' . $this->session->data['user_token'], true),
        'children' => array()
      );

      $cdek[] = array(
        'name'     => 'Другое',
        'href'     => '',
        'children' => $cdek_other
      );

      $data['menus'][] = array(
        'id'       => 'menu-cdek',
        'icon'     => 'fa-truck',
        'name'     => 'СДЭК',
        'href'     => '',
        'children' => $cdek
      );
      // CDEK OCMOD END]]></add>
    </operation>
  </file>

</modification>

 

 

Ссылка на комментарий
Поделиться на других сайтах


4 часа назад, Andrew18 сказал:

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

В модификаторе нет ничего

Сочувствую вам с этим модулем.

Ещё обратите внимание не добавляются ли лишние события в админке.

Ссылка на комментарий
Поделиться на других сайтах

7 часов назад, buslikdrev сказал:

Ещё обратите внимание не добавляются ли лишние события в админке.

:o штук 300 событий от сдэка. Они постоянно добавляются что-ли или их число фиксировано? Я не понимаю, что такое вообще события, для чего они?

Ссылка на комментарий
Поделиться на других сайтах


11 часов назад, Andrew18 сказал:

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

Ответ

Цитата

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

Подскажите, пожалуйста, где прописать данное условие?

Ссылка на комментарий
Поделиться на других сайтах


Вот что я нашел в файле \catalog\controller\event\cdekshipping.php

class ControllerEventCdekshipping extends Controller {
    public function addScripts() {
        $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
        $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
        $this->document->addScript('catalog/view/javascript/sdek.js');
    }

Это они создают события? Как их отключить со всего сайта и оставить только на странице заказа?

Ссылка на комментарий
Поделиться на других сайтах


В 11.12.2020 в 01:39, Andrew18 сказал:

Вот что я нашел в файле \catalog\controller\event\cdekshipping.php


class ControllerEventCdekshipping extends Controller {
    public function addScripts() {
        $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
        $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
        $this->document->addScript('catalog/view/javascript/sdek.js');
    }

Это они создают события? Как их отключить со всего сайта и оставить только на странице заказа?

Я у себя решил это так:

удалил строки cdekymap, sdek.js и в плагине Simple в разделе java script добавил:

 

$.when(
    $.getScript( "//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap" ),
    $.getScript( "catalog/view/javascript/sdek.js" ),
    $.Deferred(function( deferred ){
        $( deferred.resolve );
    })
).done(function(){
    // все загрузили
});

 

  • +1 3
Ссылка на комментарий
Поделиться на других сайтах


@Rodrigesdm Спасибо за ответ!

Я добавил условие для подгрузки скриптов только в чекауте, вроде работает

class ControllerEventCdekshipping extends Controller {
	public function addScripts() {
	    if (isset($this->request->get['route']) && preg_match('/checkout\/simplecheckout/', $this->request->get['route'])) {
            $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
	    $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
	    $this->document->addScript('catalog/view/javascript/sdek.js');
	    }
	}

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

Этот сдэк насоздавал несколько сотен Событий. Я написал в ТП модуля. Ответили, что можешь их отключить. Так а на кой хрен они вообще тогда нужны. Могу я их удалить?

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


2 часа назад, Andrew18 сказал:

@Rodrigesdm Спасибо за ответ!

Я добавил условие для подгрузки скриптов только в чекауте, вроде работает


class ControllerEventCdekshipping extends Controller {
	public function addScripts() {
	    if (isset($this->request->get['route']) && preg_match('/checkout\/simplecheckout/', $this->request->get['route'])) {
            $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
	    $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
	    $this->document->addScript('catalog/view/javascript/sdek.js');
	    }
	}

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

Этот сдэк насоздавал несколько сотен Событий. Я написал в ТП модуля. Ответили, что можешь их отключить. Так а на кой хрен они вообще тогда нужны. Могу я их удалить?


Ваш способ даже поинтереснее.

Про события.. Вчера заходил смотрел, сдековских событий было в районе 12-20 , сейчас 60.

Получается при каком-то действии они клонируются. 

Вопрос актуален. Старожили. Хелпаните.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


там события добавляются, когда заходите в какой-то функционал
По памяти не помню

щите в админке в модулях СДЭКа
addEvent
 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

@chukcha Вот что я нашел в файле admin\controller\extension\shipping\cdek.php

Спойлер

public function createOTCTable() {
		$sql  = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "order_to_sdek` ( ";
		$sql .= "`order_to_sdek_id` int(11) NOT NULL AUTO_INCREMENT, ";
		$sql .= "`order_id` int(11) NOT NULL, ";
		$sql .= "`cityId` int(11) NOT NULL, ";
		$sql .= "`pvz_code` varchar(255) NOT NULL, ";
		$sql .= "PRIMARY KEY (`order_to_sdek_id`), ";
		$sql .= "UNIQUE KEY `order_id` (`order_id`) ";
		$sql .= ") ENGINE=MyISAM  DEFAULT CHARSET=utf8;";

		$this->db->query($sql);

		$sql  = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "cdek_city` ( ";
		$sql .= "`id` varchar(11) NOT NULL, ";
		$sql .= "`name` varchar(64) NOT NULL, ";
		$sql .= "`cityName` varchar(64) NOT NULL, ";
		$sql .= "`regionName` varchar(64) NOT NULL, ";
		$sql .= "`center` tinyint(1) NOT NULL DEFAULT '0', ";
		$sql .= "`cache_limit` float(5,4) NOT NULL, ";
		$sql .= "PRIMARY KEY (`id`) ";
		$sql .= ") ENGINE=MyISAM DEFAULT CHARSET=utf8";

		$this->db->query($sql);
		$this->load->model('tool/cdektool');
		$this->model_tool_cdektool->importCdekCities();

		$this->load->model('setting/event');

		$this->model_setting_event->addEvent('cdek_shipping_add_scripts', 'catalog/controller/common/header/before','event/cdekshipping/addScripts');
		$this->model_setting_event->addEvent('cdek_shipping_success_order', 'catalog/controller/checkout/success/before','event/cdekshipping/successOrder');

		$this->model_setting_event->addEvent('cdek_shipping_order_create', 'catalog/model/checkout/order/addOrder/after','event/cdekshipping/orderCreate');

		$this->model_setting_event->addEvent('cdek_shipping_order_history', 'catalog/model/checkout/order/addOrderHistory/before','event/cdekshipping/orderHistory');

		$this->model_setting_event->addEvent('cdek_shipping_check_tariff_pvz', 'catalog/controller/checkout/shipping_method/save/before','event/cdekshipping/checkTariffPvz');
	}

	public function uninstall() {

		$this->load->model('setting/event');

		$this->model_setting_event->deleteEvent('cdek_shipping_add_scripts');
		$this->model_setting_event->deleteEvent('cdek_shipping_success_order');
		$this->model_setting_event->deleteEvent('cdek_shipping_order_create');
		$this->model_setting_event->deleteEvent('cdek_shipping_order_history');
		$this->model_setting_event->deleteEvent('cdek_shipping_check_tariff_pvz');

	}

 

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

Ссылка на комментарий
Поделиться на других сайтах


Не.. Удаляются при деактивации модуля

Я точно не помню, возможно у них есть вызов еще в каком-то месте

createOTCTable
Ссылка на комментарий
Поделиться на других сайтах

У меня нет модуля, я смотрел один раз

Там не только в модуле это может быть, а кажется еще и в настройках доставки.

 

Ссылка на комментарий
Поделиться на других сайтах

@chukcha Я извиняюсь, но не понимаю, что надо искать?

Объясните, пожалуйста, если вас не затруднит. Зачем нужны эти события и можно ли их удалять?

Ссылка на комментарий
Поделиться на других сайтах


26 минут назад, Andrew18 сказал:

Зачем нужны эти события

Это функционал модуля

Можете удалить, но моуль не будет работать

Но у вас дубли событий, поэтому, возможно, что-то выполнятеся по несколько раз
Количество - их может быть сколько-то - не важно.
А вот дубли - это плохо

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

4 часа назад, Andrew18 сказал:

Я добавил условие для подгрузки скриптов только в чекауте, вроде работает

Я вот тут ещё более элегантное решение придумал))

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

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

В 15.12.2020 в 21:46, Andrew18 сказал:

@chukcha Я извиняюсь, но не понимаю, что надо искать?

Объясните, пожалуйста, если вас не затруднит. Зачем нужны эти события и можно ли их удалять?

Решил вопрос?

Ссылка на комментарий
Поделиться на других сайтах


@Rodrigesdm Нет, а как тут решить без специалиста? Удалил пока дубли событий. ТП модуля в очередной раз ответила, что в новой версии все будет исправлено. Тоже самое они мне говорили пол года назад по другой проблеме этого модуля. Никаких новых версий не выходило.

Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
16.12.2020 в 20:22, Andrew18 сказал:

@Rodrigesdm Нет, а как тут решить без специалиста? Удалил пока дубли событий. ТП модуля в очередной раз ответила, что в новой версии все будет исправлено. Тоже самое они мне говорили пол года назад по другой проблеме этого модуля. Никаких новых версий не выходило.

Добрый день, Вы решили проблему с загрузкой сайта из за этого модуля?

Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
10.12.2020 в 19:39, Andrew18 сказал:

Вот что я нашел в файле \catalog\controller\event\cdekshipping.php

class ControllerEventCdekshipping extends Controller {
    public function addScripts() {
        $this->document->addStyle('catalog/view/theme/default/stylesheet/sdek.css');
        $this->document->addScript('//api-maps.yandex.ru/2.1/?lang=ru_RU&ns=cdekymap');
        $this->document->addScript('catalog/view/javascript/sdek.js');
    }

Это они создают события? Как их отключить со всего сайта и оставить только на странице заказа?

работает, спасибо

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.