Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

Спойлер

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 year later...
16.12.2020 в 20:22, Andrew18 сказал:

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

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

Надіслати
Поділитися на інших сайтах


  • 1 year later...
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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.