Jump to content
Sign in to follow this  
halfhope

Тормоза в админке на странице заказов. Около 30 000 заказов.

Recommended Posts

Всем привет.

 

Тормозит страница заказов, а именно фильтрация. За фильтрацию отвечает функция GgetOrders($data = array()) модели sale/order.

public function getOrders($data = array()) {
	$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS status, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";

	if (isset($data['filter_order_status_id']) && !is_null($data['filter_order_status_id'])) {
		$sql .= " WHERE o.order_status_id = '" . (int)$data['filter_order_status_id'] . "'";
	} else {
		$sql .= " WHERE o.order_status_id > '0'";
	}

	if (!empty($data['filter_order_id'])) {
		$sql .= " AND o.order_id = '" . (int)$data['filter_order_id'] . "'";
	}

	if (!empty($data['filter_customer'])) {
		$sql .= " AND CONCAT(o.firstname, ' ', o.lastname) LIKE '%" . $this->db->escape($data['filter_customer']) . "%'";
	}

	if (!empty($data['filter_date_added'])) {
		$sql .= " AND DATE(o.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')";
	}
	
	if (!empty($data['filter_date_modified'])) {
		$sql .= " AND DATE(o.date_modified) = DATE('" . $this->db->escape($data['filter_date_modified']) . "')";
	}
	
	if (!empty($data['filter_total'])) {
		$sql .= " AND o.total = '" . (float)$data['filter_total'] . "'";
	}

	$sort_data = array(
		'o.order_id',
		'customer',
		'status',
		'o.date_added',
		'o.date_modified',
		'o.total'
	);

	if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
		$sql .= " ORDER BY " . $data['sort'];
	} else {
		$sql .= " ORDER BY o.order_id";
	}

	if (isset($data['order']) && ($data['order'] == 'DESC')) {
		$sql .= " DESC";
	} else {
		$sql .= " ASC";
	}

	if (isset($data['start']) || isset($data['limit'])) {
		if ($data['start'] < 0) {
			$data['start'] = 0;
		}

		if ($data['limit'] < 1) {
			$data['limit'] = 20;
		}

		$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
	}

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

	return $query->rows;
} 

 

 

Прошу помощи у тех, кто уже встречался с таким, кто ее оптимизировал. Есть второй выход - удалить часть заказов, но это исключено. 

Share this post


Link to post
Share on other sites

не сталкивался, но если покажите expalin запроса, постараюсь помочь

Share this post


Link to post
Share on other sites

какие вижу варианты пока не получил explain

1. проверить скорость если убрать подзапрос

(SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS status

2. проверить есть ли ключи на полях из where, из sort order.

выборка из одной таблицы не должна тормозить

Share this post


Link to post
Share on other sites

Ответ прост

 

LIKE '%" . $this->db->escape($data['filter_customer']) . "%'"

 

 

При % в "начале" LIKE - идет перебор всей базы

 

Это очень тормозной запрос и ни какие индексы не помогут

Share this post


Link to post
Share on other sites

Да там подзапрос при большой выборке еще может добавить "30`000" запросов к базе  :)

Share this post


Link to post
Share on other sites

Ответ прост

 

 

При % в "начале" LIKE - идет перебор всей базы

 

Это очень тормозной запрос и ни какие индексы не помогут

а как же FULLTEXT индекс ? 

Share this post


Link to post
Share on other sites

Да там подзапрос при большой выборке еще может добавить "30`000" запросов к базе  :)

если дело в подзапросе, то проблема легко решается его заменой на JOIN.

без expalin'а мы можем только гадать )

Share this post


Link to post
Share on other sites

а как же FULLTEXT индекс ? 

Для %...% до 3.14 он

Только для LIKE ...%

Share this post


Link to post
Share on other sites

Сам запрос

SELECT o.order_id, CONCAT( o.lastname, ' ', o.firstname ) AS customer, o.order_status_id, o.webme_sent_review_reminder, (SELECT os.name FROM order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '1') AS status, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `order` o WHERE o.order_status_id = '24' ORDER BY o.order_id DESC LIMIT 0,50

Выполняется за 1.4 секунды с включенным профайлером, что вполне приемлемо. Вот что выдал профайлер: Total time 13.7506 seconds | Total queries:563

 

Проблема была в vqmod/ocmod модулях для показа реферала (soforp_order_referer) и цвета заказа, они добавляют подзапросы:

SELECT referrer FROM `order_referrer` WHERE order_id = '29622' and cookie_name='last_referrer'

и

SELECT color FROM order_status_color WHERE order_status_id = '24'

Каждый из этих запросов выполняется в среднем за 0.15 сек. Авторам данных дополнений уже отписался. Кстати, отключили soforp_order_referer и заработало шустрей (1.5 сек). 

 

Решение

 

Проблема решилась без отключения модуля soforp_order_referer, путем добавления индексов  в таблицу order_referrer

 

order_referrer_id  int(11) AI

order_id                int(11) NULL  

cookie_name        varchar(100) NULL  

cookie_val            int(11) NULL  

referrer                 text NULL

 

Добавил индексы в поля по которым идет выборка:

ALTER TABLE `order_referrer`
ADD INDEX `order_id` (`order_id`);

ALTER TABLE `order_referrer`
ADD INDEX `cookie_name` (`cookie_name`);

С отключенным профайлером загрузка страницы встала на место и теперь занимает всего ~0.6 секунд. Всем спасибо за потраченное время. Спасибо, кстати, не знал про замену LIKE.

Edited by halfhope

Share this post


Link to post
Share on other sites
Total queries:563

 

ОГО! :?

Share this post


Link to post
Share on other sites
знал про замену LIKE.

 

 

Тоже аккуратно у MATCH свои подводные камни есть

Так что панацеи нет для "поиска" по тексту полноценного

 

Один вариант лучше на одних задачах, другой на других

 

Универсального решения - НЕТ :(

Share this post


Link to post
Share on other sites

Тоже аккуратно у MATCH свои подводные камни есть

Так что панацеи нет для "поиска" по тексту полноценного

 

Один вариант лучше на одних задачах, другой на других

 

Универсального решения - НЕТ :(

всё верно.

MATCH (col1,col2,...) AGAINST (expr [search_modifier]) это не замена LIKE, это функция, которая, возможно, при каких-то условиях будет работать быстрее чем LIKE

Share this post


Link to post
Share on other sites
Проблема решилась без отключения модуля soforp_order_referer, путем добавления индексов  в таблицу order_referrer

 

пробуйте заменить подзапросы на LEFT JOIN, возможно еще скорости добавится

Share this post


Link to post
Share on other sites

Опенкарт такая штука, что либо будет 100500 запросов, либо будет проблема с совместимостью с модулями ( когда патчится основной запрос ). Я вдоволь наелся проблем второго типа, когда сделал скидку на модули, и потому перешел на первую модель, когда на каждый заказ вытягиваются доп данные. По совместимости стало идеально. Но не учел что табличка у меня сама по себе не маленькая, да и есть клиенты, которые вместо 10 заказов жаждут видеть сразу 100.

 

Поэтому огромное спасибо за дружеский пинок по индексам. От себя добавлю что индекс нужен был покрывающий, т.е. такой:

$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_referrer` ADD INDEX `order` (`order_id`,`cookie_name`);");

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

Share this post


Link to post
Share on other sites

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

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

 

PS: сам еще не сталкивался с проверкой по наличию индексов - если что не так, сапогами прошу не кидать :ugeek:

Share this post


Link to post
Share on other sites

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

 

PS: сам еще не сталкивался с проверкой по наличию индексов - если что не так, сапогами прошу не кидать :ugeek:

Alex там не только проверка на индексы- там проблема в запросе - очень большая выборка получается - более 500 подзапросов :(

Там сам запрос надо менять перехватив модель и обработать через __call

Share this post


Link to post
Share on other sites

Там сам запрос надо менять перехватив модель и обработать через __call

- дяденька.. я не настоящий сварщик! (с) :-D

 

сорри за офтоп

просто стало интересно - зачем выносить мозг пользователям ручным выполнением запроса в БД, если можно добавить автоматом?

или нельзя?

 

ну-ка пойду тестить! :ugeek:

Share this post


Link to post
Share on other sites
AlexDW
    private $fields = array(
        'product_attribute' => array('product_id'),
        'product_option_value' => array('option_value_id', 'product_id'),
        'product_to_category' => array('category_id'));

...

    public function check_indexes() {
        foreach($this->fields as $table => $indexes) {
            $query = $this->db->query("SHOW INDEX FROM `" . DB_PREFIX . $table . "`");

            $keys = array();
            foreach($query->rows as $row) {
                    $keys[] = $row['Column_name'];
            }
            $keys = array_diff($indexes, $keys);
            foreach($keys as $key) {
                $this->db->query("ALTER TABLE `" . DB_PREFIX . $table . "` ADD INDEX ( `" . $key . "` )");
            }
        }
    }
  • +1 1

Share this post


Link to post
Share on other sites

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

 

PS: сам еще не сталкивался с проверкой по наличию индексов - если что не так, сапогами прошу не кидать :ugeek:

Со временем туго :) В следующих версиях обязатлеьно сделаю

 

просто стало интересно - зачем выносить мозг пользователям ручным выполнением запроса в БД, если можно добавить автоматом?

Все правильно, но кому это реально мешает - попросят меня в личку и я выполню им запросы. кому не мешает, тот и заморачиваться не будет

Share this post


Link to post
Share on other sites
freelancer, спасибо!

Share this post


Link to post
Share on other sites

работает, тестил так:

    $sql = "SHOW INDEX FROM " . DB_PREFIX ."product WHERE KEY_NAME = 'productz'";
    $query = $this->db->query($sql);
    if ($query->num_rows == 0) {
        $this->db->query("ALTER TABLE " . DB_PREFIX ."product ADD INDEX `productz` (`product_id`,`cost`)");
    }

freelancer - спасибо за решение!

Share this post


Link to post
Share on other sites

работает, тестил так:

    $sql = "SHOW INDEX FROM " . DB_PREFIX ."product WHERE KEY_NAME = 'productz'";
    $query = $this->db->query($sql);
    if ($query->num_rows == 0) {
        $this->db->query("ALTER TABLE " . DB_PREFIX ."product ADD INDEX `productz` (`product_id`,`cost`)");
    }

freelancer - спасибо за решение!

 

 

Можно так еще

        $r = $this->db->query("SHOW KEYS FROM `" . DB_PREFIX . "review_fields` WHERE Key_name ='review_id'");
        if ($r->num_rows == 0) {
            $msql = "ALTER TABLE `" . DB_PREFIX . "review_fields`  ADD INDEX (`review_id`)";
            $query = $this->db->query($msql);
        }

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By SergeTkach
      1 000.00 руб
      Скачать/Купить дополнение


      Удобное массовое редактирование товаров в OpenCart 2.x с модулем Handy Product Manager
      Наполнение интернет-магазина товарами может превратиться в сущий кошмар, если использовать стандартную админку OpenCart.
      Модуль Handy Product Manager позволяет Вам массового редактировать и удобно добавлять товары в OpenCart 2, настолько же быстро, как если бы Вы прописывали товары в экселе. Но намного более удобно в плане работы с данными товара.
       
      Внимание!
      В версии 1.1.0 добавлен функционал массового редактирования товаров по заданным фильтрам. А также добавлена тестовая лицензия. Для получения тестовой версии модуля обращайтесь в личные сообщения на данном сайте.  
      ПРЕДУПРЕЖДЕНИЕ!
      С версии 1.1.0 версия php 5.4 больше не поддерживается. Покупая модуль, Вы даете свое согласие с ЛИЦЕНЗИОННЫМ СОГЛАШЕНИЕМ, которое представлено внизу этого текста. Также Вы соглашаетесь с моей Политикой поддержки! Изучите ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ ниже по тексту Просьба при покупке модуля указывать домен, для которого покупается модуль. Также при необходимости, укажите отладочный локальный домен (*.loc) или поддомен на основном сайте.  
       
      ПРЕИМУЩЕСТВА МОДУЛЯ ПРИ МАССОВОМ РЕДАКТИРОВАНИИ ТОВАРОВ
      Массовые изменения по заданным фильтрам (главная категория, наличие категории, производитель, атрибут, опция, дата добавления) Массовая замена цен на заданный процент или фиксированную сумму Массовое назначение акций и скидок на заданный процент от цены товара Массовая генерация мета-тегов (в отличие от Seo Tags Generator, данные мета-теги записываются в базу данных) Массовая генерация рандомного текста с описаниями товаров (используется рандомизатор отсюда - http://xbb.uz/randomizator/text.bb) Массовое назначение атрибутов (очень полезно после импорта сотен товаров, у которых производитель не заполняет атрибуты так, как это нужно в OpenCart) Массовое назначение опций  
       
      ПРЕИМУЩЕСТВА МОДУЛЯ ПРИ ДОБАВЛЕНИИ И РЕДАКТИРОВАНИИ В СПИСКЕ ТОВАРОВ
      Удобный фильтр товаров в админке — позволяет быстро найти товар по ID, артикулу модели, категории, производителю, атрибуту и значению атрибута и даже по SEO URL.
      Быстрый выбор существующих атрибутов и опций прямо в списке товара без дополнительных всплывающих окон и переходов куда-бы то ни было.
      Возможность создания нового атрибута прямо в списке товара (!) и возможность выбрать значения атрибутов из выпадающего списка (1 раз вписал, потом просто кликаем — наподобие как в модуле Attribute select oc2.0, только в последнем нет создания нового атрибута на ходу)
      Быстрая загрузка изображений товаров прямо в списке товара с переименованием и распределением в папку категории, к которой отнесен товар (если категория выбрана перед загрузкой фотографии). Возможность загрузки товаров методом Drug & Drop + изменение сортировки изображений также выполняется перетаскиванием.
      Возможность клонировать сразу 99 экземпляров нужного товаров — что бывает очень удобно при выполнении работы по наполнению товаров определенной категории с очень похожими параметрами.
      Из поля зрения убраны поля доставка, вес, ширина, высота и тому подобные невостребованные поля
       
       
      КОГДА ВАМ ПРИГОДИТСЯ МОДУЛЬ HANDY PRODUCT MANAGER?
      Когда Вы хотите удобно быстро и без лишних переходов по страницам добавить товар в свой магазин или выполняете работу по наполнению сайта для заказчика
      Когда Вы хотите быстро отредактировать цены без необходимости делать экспорт товаров в xls (экселе) — работа в модуле изначально организована так, чтобы сделать изменения цены было настолько же просто, как в электронной таблице
      Когда Вы делаете SEO оптимизацию и хотите отредактировать мета-описания ряда товаров — HPM также будет удобнее, чем эксель.
       
       
       
      ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
       
      Требования к компьютеру
      Разрешение монитора - от 1280px ширины - иначе, будет сложно понимать, что где находится.
      Компьютер в целом должен быть в хорошем состоянии. Не должно быть такого, что при открытии скайпа и 7-10 вкладок браузера все бы зависало.
       
      На сервере (хостинге) должно быть:
       
      memory_limit: Не менее 512 М
       
      PHP 5.4 - не поддерживается (!)
      PHP 5.6 - PHP 7.2 c IonСube Loader 10
      Внимание! PHP 7.3 пока что не поддерживается!
       
       
      Требования к системе OpenCart
      Работоспособность модуля проверяется на только что установленной системе без кучи других модулей. Предусмотреть все изменения, которые делают другие модули невозможно, поэтому конфликты с другими модулями не являются ошибкой в самом модуле и требуют дополнительно кастомизации (отладки), что обычно ложится на плечи разработчика магазина. Претензии по ошибкам, возникшим в результате конфликта совместимости модулей в бесплатную поддержку модуля не входят.
      Допускается проверка работоспособности модуля с установленным модулем SEO PRO и LocalCopy.ocmod.xml
       
      Что в модуле зашифровано?
      Контроллер админки модуля Библиотека модуля, где происходит проверка лицензии и служебные операции  
       
       
      УСТАНОВКА МОДУЛЯ
       
      Установка стандартная - через менеджер расширений OCMOD и описана в файле Установка-Модуля.txt (или install.txt) в архиве с модулем.
       
       
      ДЕМО
      Данные для входа в демо-доступ:
         Логин: demo
         Пароль: demo

      Посмотрите:
      Список товаров (Меню Каталог -> HPM - Список товаров ) - http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager/productList&page=1 Массовое редактирование товаров -http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager/massEdit Настройки модуля - http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager  
       
       
       
      ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
       
      Покупая или устанавливая новую версию данного продукта, Вы подтверждаете свое безоговорочное согласие со следующими условиями его использования.
       
      Модуль продается и используется на условиях "Как есть". Модуль представляет собой типичное решение типичной задачи. Проверяйте наличие нужного функционала в демо модуля. В стоимость модуля не входит адаптация продукта под индивидуальные нужды покупателя. Вам предоставляется неэксклюзивное право на использование модуля на 1 домене. "Перенос" лицензии на другой домен не предполагается. Однако, дополнительная лицензия может быть выдана на отладочные домены, которые соответствуют следующим требованиям:
      - Поддомен на основном домене (test.sitename.com, demo.sitename.com)
      - Поддомен на сайте разработчика (студии) (shopname.studioname.com)
      - Локальный домен вида sitename.loc или sitename.local Срок отправки кода лицензии — в течение 1 рабочего дня! Интерфейс текущей версии модуля может немного отличаться от того, который представлен на снимках экрана в презентационных материалах. Это не является дефектом модуля, просто в новых версиях модуля могут быть добавлены новые функции. Однако общие принципы работы модуля остаются теми же самыми. В случае использования мультимагазина, лицензия выдается на основной домен, на котором будет осуществляться управления всеми магазинами. Автор  дает полную гарантию, что весь заявленный функционал, кроме экспериментального, будет работать на тех версиях системы, что заявлены в разделе СОВМЕСТИМОСТЬ и при условии соблюдения ТЕХНИЧЕСКИХ ТРЕБОВАНИЙ. В случае неработоспособности из-за ошибок в модуле, обязуется исправить ее в течение 3 рабочих дней с момент получения сообщения об ошибке или в противном случае осуществить возврат с вычетом комиссий платежных систем. Гарантия устранения ошибок действует 12 месяцев с момента оплаты. Гарантия НЕ РАСПРОСТРАНЯЕТСЯ на Дополнительные модификаторы(!) из папки "Дополнительные-модификаторы" (раннее называлась "additional"). Они являются бонусными и не входят в стоимость покупки. Вы теряете гарантию на бесплатную поддержку, если в модуле были сделаны модификации (не зависимо делал ли их я или сторонний разработчик, модуль перестает работать по типичному сценарию и требует индивидуального рассмотрения ситуации) Гарантия устранения ошибок не распространяется на конфликты совместимости модулей. То есть, говорить, что проблема точно исходит из моего модуля можно только в том случае, если на сайте не установлен ни один другой модуль ( кроме LocalCopy.ocmod.xml ) и при этом исходные файлы OpenCart не были отредактированы вручную. Гарантия не распространяется на новый экспериментальный функционал, который появляется при выпуске бета-версии модуля (добавляется слово Бета-версия после номера версии) Покупая и продолжая использовать модуль Вы соглашаетесь с "Политикой поддержки" При оценке возможного ущерба от использования купленного программного обеспечения, в котором была ошибка, максимальная ответственность автора и (или) продавца не может превышать стоимость дефектного ПО, которую покупатель оплатил по факту. Автор оставляет за собой право отказывать в поддержке в случае, если клиент не соблюдает рамки приличия и деловой стиль общения и/или позволяет себе фамильярность, оскорбления или хамство Модуль содержит зашифрованные файлы, обеспечивающие контроль над лицензиями Вы отказываетесь от намерения запрашивать открытый исходный код зашифрованных файлов и осознаете, что любая попытка расшифровки файлов или иного взлома модуля является незаконной Если Вы планируете дорабатывать модуль, необходимо получить согласие автора модуля на такие доработки. (Зачастую я не против внесения изменений в открытый код модуля, но формулировка "купил модуль с надеждой доработать, а тут закрыто" не является основанием для возврата.) Результаты платной доработки модуля могут включаться в следующие версии без получения согласия от клиента, оплатившего такую доработку.  
      Добавил SergeTkach Добавлено 03.12.2018 Категория Модули Системные требования PHP 5.6 - 7.0 + IonСube Loader 6 или PHP 7.1 - 7.2 + IonСube Loader 10. Внимание! PHP 7 пока что не поддерживается Сайт разработчика http://sergetkach.com/ Старая цена Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • By SergeTkach
      Наполнение интернет-магазина товарами может превратиться в сущий кошмар, если использовать стандартную админку OpenCart.
      Модуль Handy Product Manager позволяет Вам массового редактировать и удобно добавлять товары в OpenCart 2, настолько же быстро, как если бы Вы прописывали товары в экселе. Но намного более удобно в плане работы с данными товара.
       
      Внимание!
      В версии 1.1.0 добавлен функционал массового редактирования товаров по заданным фильтрам. А также добавлена тестовая лицензия. Для получения тестовой версии модуля обращайтесь в личные сообщения на данном сайте.  
      ПРЕДУПРЕЖДЕНИЕ!
      С версии 1.1.0 версия php 5.4 больше не поддерживается. Покупая модуль, Вы даете свое согласие с ЛИЦЕНЗИОННЫМ СОГЛАШЕНИЕМ, которое представлено внизу этого текста. Также Вы соглашаетесь с моей Политикой поддержки! Изучите ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ ниже по тексту Просьба при покупке модуля указывать домен, для которого покупается модуль. Также при необходимости, укажите отладочный локальный домен (*.loc) или поддомен на основном сайте.  
       
      ПРЕИМУЩЕСТВА МОДУЛЯ ПРИ МАССОВОМ РЕДАКТИРОВАНИИ ТОВАРОВ
      Массовые изменения по заданным фильтрам (главная категория, наличие категории, производитель, атрибут, опция, дата добавления) Массовая замена цен на заданный процент или фиксированную сумму Массовое назначение акций и скидок на заданный процент от цены товара Массовая генерация мета-тегов (в отличие от Seo Tags Generator, данные мета-теги записываются в базу данных) Массовая генерация рандомного текста с описаниями товаров (используется рандомизатор отсюда - http://xbb.uz/randomizator/text.bb) Массовое назначение атрибутов (очень полезно после импорта сотен товаров, у которых производитель не заполняет атрибуты так, как это нужно в OpenCart) Массовое назначение опций  
       
      ПРЕИМУЩЕСТВА МОДУЛЯ ПРИ ДОБАВЛЕНИИ И РЕДАКТИРОВАНИИ В СПИСКЕ ТОВАРОВ
      Удобный фильтр товаров в админке — позволяет быстро найти товар по ID, артикулу модели, категории, производителю, атрибуту и значению атрибута и даже по SEO URL.
      Быстрый выбор существующих атрибутов и опций прямо в списке товара без дополнительных всплывающих окон и переходов куда-бы то ни было.
      Возможность создания нового атрибута прямо в списке товара (!) и возможность выбрать значения атрибутов из выпадающего списка (1 раз вписал, потом просто кликаем — наподобие как в модуле Attribute select oc2.0, только в последнем нет создания нового атрибута на ходу)
      Быстрая загрузка изображений товаров прямо в списке товара с переименованием и распределением в папку категории, к которой отнесен товар (если категория выбрана перед загрузкой фотографии). Возможность загрузки товаров методом Drug & Drop + изменение сортировки изображений также выполняется перетаскиванием.
      Возможность клонировать сразу 99 экземпляров нужного товаров — что бывает очень удобно при выполнении работы по наполнению товаров определенной категории с очень похожими параметрами.
      Из поля зрения убраны поля доставка, вес, ширина, высота и тому подобные невостребованные поля
       
       
      КОГДА ВАМ ПРИГОДИТСЯ МОДУЛЬ HANDY PRODUCT MANAGER?
      Когда Вы хотите удобно быстро и без лишних переходов по страницам добавить товар в свой магазин или выполняете работу по наполнению сайта для заказчика
      Когда Вы хотите быстро отредактировать цены без необходимости делать экспорт товаров в xls (экселе) — работа в модуле изначально организована так, чтобы сделать изменения цены было настолько же просто, как в электронной таблице
      Когда Вы делаете SEO оптимизацию и хотите отредактировать мета-описания ряда товаров — HPM также будет удобнее, чем эксель.
       
       
       
      ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
       
      Требования к компьютеру
      Разрешение монитора - от 1280px ширины - иначе, будет сложно понимать, что где находится.
      Компьютер в целом должен быть в хорошем состоянии. Не должно быть такого, что при открытии скайпа и 7-10 вкладок браузера все бы зависало.
       
      На сервере (хостинге) должно быть:
       
      memory_limit: Не менее 512 М
       
      PHP 5.4 - не поддерживается (!)
      PHP 5.6 - PHP 7.2 c IonСube Loader 10
      Внимание! PHP 7.3 пока что не поддерживается!
       
       
      Требования к системе OpenCart
      Работоспособность модуля проверяется на только что установленной системе без кучи других модулей. Предусмотреть все изменения, которые делают другие модули невозможно, поэтому конфликты с другими модулями не являются ошибкой в самом модуле и требуют дополнительно кастомизации (отладки), что обычно ложится на плечи разработчика магазина. Претензии по ошибкам, возникшим в результате конфликта совместимости модулей в бесплатную поддержку модуля не входят.
      Допускается проверка работоспособности модуля с установленным модулем SEO PRO и LocalCopy.ocmod.xml
       
      Что в модуле зашифровано?
      Контроллер админки модуля Библиотека модуля, где происходит проверка лицензии и служебные операции  
       
       
      УСТАНОВКА МОДУЛЯ
       
      Установка стандартная - через менеджер расширений OCMOD и описана в файле Установка-Модуля.txt (или install.txt) в архиве с модулем.
       
       
      ДЕМО
      Данные для входа в демо-доступ:
         Логин: demo
         Пароль: demo

      Посмотрите:
      Список товаров (Меню Каталог -> HPM - Список товаров ) - http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager/productList&page=1 Массовое редактирование товаров -http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager/massEdit Настройки модуля - http://hpm-ru.sergetkach.com/admin/index.php?route=extension/module/handy_product_manager  
       
       
       
      ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
       
      Покупая или устанавливая новую версию данного продукта, Вы подтверждаете свое безоговорочное согласие со следующими условиями его использования.
       
      Модуль продается и используется на условиях "Как есть". Модуль представляет собой типичное решение типичной задачи. Проверяйте наличие нужного функционала в демо модуля. В стоимость модуля не входит адаптация продукта под индивидуальные нужды покупателя. Вам предоставляется неэксклюзивное право на использование модуля на 1 домене. "Перенос" лицензии на другой домен не предполагается. Однако, дополнительная лицензия может быть выдана на отладочные домены, которые соответствуют следующим требованиям:
      - Поддомен на основном домене (test.sitename.com, demo.sitename.com)
      - Поддомен на сайте разработчика (студии) (shopname.studioname.com)
      - Локальный домен вида sitename.loc или sitename.local Срок отправки кода лицензии — в течение 1 рабочего дня! Интерфейс текущей версии модуля может немного отличаться от того, который представлен на снимках экрана в презентационных материалах. Это не является дефектом модуля, просто в новых версиях модуля могут быть добавлены новые функции. Однако общие принципы работы модуля остаются теми же самыми. В случае использования мультимагазина, лицензия выдается на основной домен, на котором будет осуществляться управления всеми магазинами. Автор  дает полную гарантию, что весь заявленный функционал, кроме экспериментального, будет работать на тех версиях системы, что заявлены в разделе СОВМЕСТИМОСТЬ и при условии соблюдения ТЕХНИЧЕСКИХ ТРЕБОВАНИЙ. В случае неработоспособности из-за ошибок в модуле, обязуется исправить ее в течение 3 рабочих дней с момент получения сообщения об ошибке или в противном случае осуществить возврат с вычетом комиссий платежных систем. Гарантия устранения ошибок действует 12 месяцев с момента оплаты. Гарантия НЕ РАСПРОСТРАНЯЕТСЯ на Дополнительные модификаторы(!) из папки "Дополнительные-модификаторы" (раннее называлась "additional"). Они являются бонусными и не входят в стоимость покупки. Вы теряете гарантию на бесплатную поддержку, если в модуле были сделаны модификации (не зависимо делал ли их я или сторонний разработчик, модуль перестает работать по типичному сценарию и требует индивидуального рассмотрения ситуации) Гарантия устранения ошибок не распространяется на конфликты совместимости модулей. То есть, говорить, что проблема точно исходит из моего модуля можно только в том случае, если на сайте не установлен ни один другой модуль ( кроме LocalCopy.ocmod.xml ) и при этом исходные файлы OpenCart не были отредактированы вручную. Гарантия не распространяется на новый экспериментальный функционал, который появляется при выпуске бета-версии модуля (добавляется слово Бета-версия после номера версии) Покупая и продолжая использовать модуль Вы соглашаетесь с "Политикой поддержки" При оценке возможного ущерба от использования купленного программного обеспечения, в котором была ошибка, максимальная ответственность автора и (или) продавца не может превышать стоимость дефектного ПО, которую покупатель оплатил по факту. Автор оставляет за собой право отказывать в поддержке в случае, если клиент не соблюдает рамки приличия и деловой стиль общения и/или позволяет себе фамильярность, оскорбления или хамство Модуль содержит зашифрованные файлы, обеспечивающие контроль над лицензиями Вы отказываетесь от намерения запрашивать открытый исходный код зашифрованных файлов и осознаете, что любая попытка расшифровки файлов или иного взлома модуля является незаконной Если Вы планируете дорабатывать модуль, необходимо получить согласие автора модуля на такие доработки. (Зачастую я не против внесения изменений в открытый код модуля, но формулировка "купил модуль с надеждой доработать, а тут закрыто" не является основанием для возврата.) Результаты платной доработки модуля могут включаться в следующие версии без получения согласия от клиента, оплатившего такую доработку.  
    • By comers
      Нуждаюсь в помощи, т.к. не понимаю из-за нехватки знаний. Использую ocstore 2.3 и это модификатор. 
      Количество товаров у каждого бренда в списке админки (manufacturer_list) получаем с помощью этого sql-запроса
      $sql = "SELECT m.*,(SELECT COUNT(*) FROM " . DB_PREFIX . "product as p WHERE p.manufacturer_id=m.manufacturer_id) as products_count FROM " . DB_PREFIX . "manufacturer as m"; Затем по аналогии sort_noindex вставляю сортировку в контроллер
      $data['sort_products'] = $this->url->link('catalog/manufacturer', 'token=' . $this->session->data['token'] . '&sort=sort_products' . $url, true); И в manufacturer_list добавляю 
      <?php if ($sort == 'sort_products') { ?> <a href="<?php echo $sort_products; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_products_count; ?></a> <?php } else { ?> <a href="<?php echo $sort_products; ?>"><?php echo $column_products_count; ?></a> <?php } ?> В результате сортировка работает по названию производителя.
      Друзья, помогите советом, не дайте новичку утонуть в болоте, бросьте палку, чтобы выбраться 
    • By Sha
      433.00 руб
      Скачать/Купить дополнение


      Layout Type, ускорение мобильной версии.
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который позволит:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Большие скидки, для постоянных покупателей.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      Техническая поддержка
      доступна пользователям из списка покупателей.
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
      Добавил Sha Добавлено 13.03.2018 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика zeKit.pro Старая цена Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет  
    • By Sha
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который позволит:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Большие скидки, для постоянных покупателей.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      Техническая поддержка
      доступна пользователям из списка покупателей.
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
  • 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.