Prihod

Prihod

Был в сети Вчера в 19:28
Заказы не принимаю
0
FAQ 1

Каким образом передавать данные о доставке менеджеру в письме?

В чанк tpl.msEmail.new.manager добавить

{if $properties.msnovaposhta.area? }<strong>Область:</strong> {$properties.msnovaposhta.area}{/if}
 {if $properties.msnovaposhta.city? }<strong>Город:</strong> {$properties.msnovaposhta.city}{/if}
{if $properties.msnovaposhta.warehouse? }<strong>Отделение:</strong> {$properties.msnovaposhta.warehouse.Description}{/if}
+1
Существенно повысить скорость импорта так, что бы он приблизился к непосредственно импорту в базу данных не получиться т/к при классическом импорте используются процессоры modx в которых происходит куча всевозможных проверок и манипуляций с данными которые зачастую хранятся в разных таблицах (TV, опции и прочее).

Вот неполный список факторов/рекомендаций которые могут влиять на скорость импорта.

  1. если в файле нет полей типа content т/е полей которые могут содержать символ новой строки то лучше использовать csv файл т/к для импорта из него необходимо меньше ресурсов и времени.
  2. не тулить в файл импорта поля которые не будут импортироваться
  3. по возможности отказаться от использований tv и опций и где это возможно заменить на поля созданные через систему плагинов minishop2 или использовать дополнение msFieldsManager т/к это увеличит как скорость работы сайта так и импорта (каждая и опция это лишний sql запрос к базе данных и количество подзапросов в mysql лимитировано )
  4. по возможности при импорте фото указывать локальный к ним путь, а не http/https т/к тогда тратится время на их скачивание на сервер
  5. поля которое указано в опции «Ключ товара, по которому определяется его уникальность» если там поле типа pagetitle по скорость будет меньше т/к в БД для этого поля нет индекса поэтому если у вас свое кастомное поле добавьте для него в БД индекс
  6. количество уже имеющихся товаров в minishop2
  7. размер файла импорта, если он очень большой то по возможности его стоит разбить на меньшие т/к тогда меньше тратится времени и ресурсов сервера на смещение указателя чтения для новой итерации
  8. импорт через cron также использует чуть меньше расход ресурсов, а также позволяет частично решить проблему timeout. Дополнительная инфа по настройки сервера для работы с большими файлами есть в доках дополнения в разделе “Импорт больших файлов”
  9. другие дополнения, которые могут срабатывать при определенных событиях minishop2 и делать свои какие то манипуляции с данными
2
+1
Код плагина который отменяет у товара публикацию если он не попал в файл импорта

<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'msieOnCompleteImportProduct':
        // Массив ID   настроек полей для которых нужно использовать данный плагин http://prntscr.com/kkwx4r
        $presets = array();

        if (!in_array($preset, $presets)) return;

        // Получаем id всех товаров которые были импортированы
        if (!$ids = $modx->event->params['data']) return;

        // Снимаем с публикации товары которые не попали в файл импорта
        $sql = "UPDATE {$modx->getTableName('msProduct')} SET published = 0 WHERE context_key = 'msProduct'  AND  id NOT IN ({$ids});";

        // $sql = "UPDATE {$modx->getTableName('msProductData')} SET my_custom_field = 0 WHERE id  NOT IN ({$ids});";
        $modx->exec($sql);

        break;
}