Евгений Лазарев

Евгений Лазарев

С нами с 06 августа 2018; Место в рейтинге пользователей: #417
Евгений Лазарев
31 января 2021, 13:27
+1
Вдруг кому понадобится: я решил этот момент следующим образом:
1) создал кастомный сlass customFilter extends mse2FiltersHandler, возможность создания которого предусмотрена компонентом
2) переназначил функцию constract
public function __construct(mSearch2 &$mse2, array $config = array()) {
		parent::__construct($mse2, $config);
        $this->catalogBanners();
	}
3) В своей функции catalogBanners() выполнил что мне нужно:
public function catalogBanners(){
        $banners = json_decode($this->modx->resource->getTVValue('migx_catbans'),true);

        $fabrics = $_REQUEST['fabric'] ? explode(',',$_REQUEST['fabric']) : [];
        $metals = $_REQUEST['metal'] ? explode(',',$_REQUEST['metal']) : [];

        $key = md5(implode('|', array_merge($fabrics, $metals)));

        if (isset($_SESSION['catbans']) and $_SESSION['catbans']['key'] === $key){
            return true;
        }
        shuffle($banners);

        $is_main = (empty($fabrics) and empty($metals)) ? true : false;

        $catbans = [];
        foreach ($banners as $idx=>$banner){
            $is_good = true;
            $migx_fabric = is_array($banner['fabric']) ? $banner['fabric'] : explode(',',$banner['fabric']);
            if (empty(array_intersect($fabrics, $migx_fabric)) and !empty($banner['fabric']) and !$is_main){
                $is_good = false;
            }
            $migx_metal = is_array($banner['metal']) ? $banner['metal'] : explode(',',$banner['metal']);
            if (empty(array_intersect($metals, $migx_metal)) and !empty($banner['metal']) and !$is_main){
                $is_good = false;
            }
            if ($is_good){
                //Расчет позиции нахождения баннера (3,17,35,49,67)
                $position = 3 + count($catbans) * 14 + intdiv(count($catbans), 2) * 4;
                $catbans[$position] = $banner;
            }
        }

        $_SESSION['catbans'] = $catbans;
        $_SESSION['catbans']['key'] = $key;

        return true;
    }
4) в tpl mFilter2 уже обращаясь к сессии взял что мне нужно:
{var $catbans = $.session.catbans}
{if $catbans[$idx]}
<a href="{$catbans[$idx]['href']}" class="banner">
    <img src="/images/{$catbans[$idx]['img']}" alt="" />
</a>
{/if}
Итого:
— вызывается 1 раз, как и нужно и с появлением контента
— нет причин бояться обновления компонента
Евгений Лазарев
31 января 2021, 13:20
0
Решение хорошее, но не совсем подходит, потому что оно работает после того как отобразился контент товаров.
Евгений Лазарев
21 января 2021, 15:54
0
Ну да вижу. И в package такого нет. Буду разбираться спасибо.
Евгений Лазарев
21 января 2021, 15:48
0
yadi.sk/i/dvFRXmWZSp4kCA
/assets/components/minishop2/js/web
Вчера устанавливал новую.
Евгений Лазарев
21 января 2021, 15:30
0
Да точно. Устанавливал через modstore.
Евгений Лазарев
21 января 2021, 14:58
0
Подскажите, кто скачивал у всех default.js странный с кучей console.log() закоментированных и нет, которые влияют на некорректную работу например при изменении кол-ва товаров в корзине?
Евгений Лазарев
08 января 2021, 14:58
0
Виталий, было бы здорово добавить удаление файлов каталога и предложений из админки с 3ей вкладки. Для менеджера, когда необходимо загрузить к примеру только offer.xml, то с первого раза получится. Но во второй раз когда нужно загрузить напишется, что этот файл уже есть. Само собой менеджера никто не допустит к файловой системе чтобы не удалил нужное.
Евгений Лазарев
02 декабря 2020, 10:54
+1
Лишнее удалите чего у Вас нет. У меня добавлены собственные поля в minishop2 через систему плагинов.
Евгений Лазарев
02 декабря 2020, 10:53
+1
[
  {
    "namespace": "",
    "namespace_path": "",
    "classKey": "msOrder",
    "name": "Экспорт заказов",
    "tab": "Экспорт заказов",
    "limit": 50000,
    "start": 0,
    "sort": "id",
    "dir": "ASC",
    "last_start_run": null,
    "last_end_run": null,
    "date_process": true,
    "date_format": "d.m.Y H:i:s",
    "classExport": "xlsx",
    "classExportList": "xls,xlsx,csv",
    "area": "minishop2-form-orders",
    "delimiter": ";",
    "source": 10,
    "path": "",
    "dependent_profile": "ordersproducts",
    "processor": "core\/components\/msexportordersexcel\/processors\/mgr\/export\/custom\/orders",
    "filename": "Экспорт заказов %d.%m.%Y",
    "download": true,
    "remove": true,
    "line_grouping": true,
    "line_grouping_show": false,
    "head_process": true,
    "head_color": "ffeb9c",
    "head_all": false,
    "head_freezepane": true,
    "hide_colump": "id,weight",
    "height": "20",
    "width": "20",
    "where": "",
    "select": "",
    "leftjoin": "",
    "innerjoin": "{\n    \"User\": {\n        \"class\": \"modUser\",\n        \"on\": \"msOrder.user_id = User.id\"\n    },\n    \"UserProfile\": {\n        \"class\": \"modUserProfile\",\n        \"on\": \"msOrder.user_id = UserProfile.internalKey\"\n    },\n    \"Payment\": {\n        \"class\": \"msPayment\",\n        \"on\": \"msOrder.payment = Payment.id\"\n    },\n    \"Delivery\": {\n        \"class\": \"msDelivery\",\n        \"on\": \"msOrder.delivery = Delivery.id\"\n    },\n    \"Status\": {\n        \"class\": \"msOrderStatus\",\n        \"on\": \"msOrder.status = Status.id\"\n    },\n    \"Address\": {\n        \"class\": \"msOrderAddress\",\n        \"on\": \"msOrder.address = Address.id\"\n    }\n}",
    "style": "",
    "relatedObjects": "",
    "json_process": true,
    "groupby": "",
    "having": "",
    "active": true,
    "fields": [
      {
        "field": "id",
        "value": "ID",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 1,
        "active": true
      },
      {
        "field": "num",
        "value": "Номер заказа",
        "width": 50,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 2,
        "active": true
      },
      {
        "field": "createdon",
        "value": "Создан",
        "width": 30,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 3,
        "active": true
      },
      {
        "field": "cost",
        "value": "На сумму",
        "width": 30,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 4,
        "active": true
      },
      {
        "field": "cart_cost",
        "value": "Общая сумма заказа",
        "width": 30,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 6,
        "active": true
      },
      {
        "field": "Address.properties",
        "value": "Промокод",
        "width": 30,
        "handler": "PropertiesPromocode",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 6,
        "active": true
      },
      {
        "field": "weight",
        "value": "Вес",
        "width": 40,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 7,
        "active": true
      },
      {
        "field": "Status.name",
        "value": "Статус",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "center",
        "rank": 26,
        "active": true
      },
      {
        "field": "Payment.name",
        "value": "Способ оплаты",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "center",
        "rank": 27,
        "active": true
      },
      {
        "field": "Delivery.name",
        "value": "Способ доставки",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "center",
        "rank": 28,
        "active": true
      },
      {
        "field": "Address.lastname",
        "value": "Фамилия",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 29,
        "active": true
      },
      {
        "field": "Address.receiver",
        "value": "Имя",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 30,
        "active": true
      },
      {
        "field": "Address.fathersname",
        "value": "Отчество",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 31,
        "active": true
      },
      {
        "field": "UserProfile.email",
        "value": "E-mail пользователя",
        "width": 40,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 32,
        "active": true
      },
      {
        "field": "Address.phone",
        "value": "Телефон",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 33,
        "active": true
      },
      {
        "field": "Address.country",
        "value": "Страна",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 34,
        "active": true
      },
      {
        "field": "Address.index",
        "value": "Индекс",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 35,
        "active": true
      },
      {
        "field": "Address.region",
        "value": "Регион",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 36,
        "active": true
      },
      {
        "field": "Address.city",
        "value": "Город",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 37,
        "active": true
      },
      {
        "field": "Address.metro",
        "value": "Метро",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 38,
        "active": true
      },
      {
        "field": "Address.street",
        "value": "Улица",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 39,
        "active": true
      },
      {
        "field": "Address.building",
        "value": "Здание",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 40,
        "active": true
      },
      {
        "field": "Address.corpus",
        "value": "Корпус",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 41,
        "active": true
      },
      {
        "field": "Address.room",
        "value": "Квартира",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 42,
        "active": true
      },
      {
        "field": "Address.comment",
        "value": "Комментарий",
        "width": 20,
        "handler": "",
        "alignment_horizontal": "",
        "alignment_vertical": "",
        "rank": 43,
        "active": true
      },
      {
        "field": "comment",
        "value": "Комментарий менеджера",
        "width": 40,
        "handler": "",
        "alignment_horizontal": "left",
        "alignment_vertical": "center",
        "rank": 44,
        "active": true
      }
    ]
  }
]
Евгений Лазарев
02 декабря 2020, 10:52
+1
[
    {
        "namespace": "",
        "namespace_path": "",
        "classKey": "msOrderProduct",
        "name": "msOrderProduct",
        "tab": "export",
        "limit": 50000,
        "start": 0,
        "sort": "id",
        "dir": "ASC",
        "last_start_run": null,
        "last_end_run": null,
        "date_process": true,
        "date_format": "d.m.Y H:i:s",
        "classExport": "xlsx",
        "classExportList": "xls,xlsx,csv",
        "area": "",
        "delimiter": ";",
        "source": 10,
        "path": "",
        "dependent_profile": "",
        "processor": "core\/components\/msexportordersexcel\/processors\/mgr\/export\/default",
        "filename": "export %d.%m.%Y",
        "download": true,
        "remove": true,
        "line_grouping": true,
        "line_grouping_show": false,
        "head_process": true,
        "head_color": "EEEEEE",
        "head_all": false,
        "head_freezepane": false,
        "hide_colump": "",
        "height": "20",
        "width": "20",
        "where": "",
        "select": "",
        "leftjoin": "",
        "innerjoin": "{\n    \"Product\": {\n        \"class\": \"msProductData\",\n        \"on\": \"msOrderProduct.product_id = Product.id\"\n    }\n}",
        "style": "",
        "relatedObjects": "",
        "json_process": false,
        "groupby": "",
        "having": "",
        "active": true,
        "fields": [
            {
                "field": "name",
                "value": "Наименование товара",
                "width": 50,
                "handler": "",
                "alignment_horizontal": "",
                "alignment_vertical": "",
                "rank": 4,
                "active": true
            },
            {
                "field": "Product.article",
                "value": "Артикул",
                "width": 50,
                "handler": "",
                "alignment_horizontal": "",
                "alignment_vertical": "",
                "rank": 5,
                "active": true
            },
            {
                "field": "count",
                "value": "Кол-во",
                "width": 20,
                "handler": "",
                "alignment_horizontal": "left",
                "alignment_vertical": "",
                "rank": 6,
                "active": true
            },
            {
                "field": "price",
                "value": "Цена",
                "width": 30,
                "handler": "",
                "alignment_horizontal": "left",
                "alignment_vertical": "",
                "rank": 7,
                "active": true
            },
            {
                "field": "weight",
                "value": "Вес",
                "width": 30,
                "handler": "",
                "alignment_horizontal": "left",
                "alignment_vertical": "",
                "rank": 8,
                "active": true
            },
            {
                "field": "cost",
                "value": "Общая сумма заказа",
                "width": 40,
                "handler": "",
                "alignment_horizontal": "left",
                "alignment_vertical": "",
                "rank": 9,
                "active": true
            },
            {
                "field": "options",
                "value": "Опции",
                "width": 40,
                "handler": "msoptions",
                "alignment_horizontal": "",
                "alignment_vertical": "",
                "rank": 10,
                "active": true
            }
        ]
    }
]
Евгений Лазарев
01 ноября 2020, 15:32
0
Подскажите. А есть ли возможность программно изменить состав заказа но не через processor? При таком решении не работает событие msOnUpdateOrder — оно просто не отлавливается поскольку обновление делается в обход.
Евгений Лазарев
26 октября 2020, 19:12
0
Название меняется поскольку в кеше создается уникальным. Я ПРИМЕРНО понимаю, что кэшируется сниппет/чанк/плагин, создается файл — но при этом он не создается и пишется в БД с сылкой на этот исполнительный файл, позже при заходе на страницу к примеру по запросу БД берется информация об исполнительном файле, его нет, и происходит процедура удаления старых данных но их нет и поэтому ошибка и «создаются» новые и все по кругу. Ребят может кто в курсе этой проблемы?
Евгений Лазарев
26 октября 2020, 16:00
0
Тот же вопрос интересует. Валятся эти ошибки.
Евгений Лазарев
09 октября 2020, 14:19
0
Нашел решение. Необходимо заменить строку
$templatePath = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
на эту
$templatePath = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
в файле /core/components/controlerrorlog/processors/mgr/get.class.php
Евгений Лазарев
09 октября 2020, 14:13
0
[2020-10-09 14:07:19] (ERROR @ /core/components/controlerrorlog/processors/mgr/get.class.php : 133) PHP warning: dirname() expects exactly 1 parameter, 2 given
Евгений Лазарев
09 октября 2020, 13:59
0
Та же самая проблема. Еще когда на него нажимаешь он сам провоцирует ошибку и пишет ее в лог, но само окно пустое.
Евгений Лазарев
22 июля 2020, 16:17
0
Супер спасибо. Классная статья.
Евгений Лазарев
12 апреля 2020, 20:27
0
Он не должен быть пустой. Фильтр работает по ВСЕМУ каталогу, вне зависимости от категорий. А категории для seo лишь, это страницы которые реально существуют.