Алексей Шумаев

Алексей Шумаев

Был в сети Вчера в 09:45
Заказы принимаю
Можно руками всё выводить. Мне часто обычно удобнее так.
Все данные по всем свойствам — в массиве товара.
При использовании Fenom доступны например, так:
{set $product = $_modx->resource}
price = {$product.price}
Если ваша опция массив — используйте {foreach}{/foreach}.
Fenom: var_dump (dump) — распечатка переменной вместе с типом
Соответственно — выводите так, как удобно в данном случае.
Можно как угодно менять.
Как вариант, я вообще отключаю и делаю свой вывод сообщений в модальном окне, примерно так:
1) копируем штатный скрипт из assets/components/minishop2/js/web/default.js в assets/components/minishop2/js/web/custom.js
2) переключаем в настройках системы параметр ms2_frontend_js на новый скрипт
3) переписываем метод miniShop2.Message в скрипте на свой, например как-то так:
....
 miniShop2.Message.show = function (message) {
                if (message != '') {
                     $('#modalMessageContent').html(message);
			$('#modalMessage').modal();
                }
            };
...
Всё, что касается jGrowl в этом методе нужно в этом случае закомментировать/удалить.

Также можно обойтись без кастомизации метода: просто закомментить jGrowl в своём скрипте и использовать callbacks. Например в своём скрипте на фронтенде:
if (typeof(miniShop2) != 'undefined') { 
        miniShop2.Callbacks.Cart.add.response.success = function(response) {
            if (response.success) {
	    		console.log('cart:add');
	    	}
        }
   
        miniShop2.Callbacks.Cart.change.response.success = function(response) {
	    	if (response.success) {
	    		console.log('cart:change');
	    	}
	    };
	    
	     miniShop2.Callbacks.Cart.remove.response.success = function(response) {
	        if (response.success) {
	            console.log('cart:remove');
	        }
	     };
    }
Все данные находятся в response.
Есть такое. Жесть.
Я не уверен, что ставить некие изменения цены от порядка — хорошая идея, ибо велик риск ошибки.
Тем не менее, нормальная сортировка иногда кране нужна на фронтенде.
Я пока вышел из положения сортируя опции как мне нужно в prepareSnippet.
if(isset($row['height'])) {
    foreach($row['height'] as $k=>$v) {
        #some code
    }
}
Поищу попозже иной вариант решения, если найду — постараюсь не забыть написать.
Ну что же, посмеёмся над собой в конце тяжёлого дня…

Источником фантомных картинок оказалась таблица ms2_product_files, которая после первого тестирования, о котором все уже и забыли, содержала ~ 5000 записей. Пересечение по id и давало «картинки» при сохранении нового товара. Очевидное-невероятное.

Вопрос закрыт, всем отдыхать )
«Вроде исправлена ошибка с «передан пустой файл» в галерее на некоторых конфигурациях серверов с php 5.3»
Только что столкнулся как раз на 5.3: при создании товара сразу создаётся пустой файл в галерее. Иногда 2 штуки, но вижу я такое при попытке импорта из 1С посредством mSync.
http://prntscr.com/cns14q

Также выявлена такая ошибка: если меняем стандартное превью (в настройках и источнике файлов) на, например, 100x100, то в карточке товара и в списке товаров всё равно путь стоит 120x90. В галерее тоже вместо превью — дефолтное изображение.

Могу дать доступ к тесту, где можно видеть такие сбои.