miniShop2 2.0.0 pl2

Выпустил исправление первой стабильной версии MS2.

- [mgr] Fixed formatting of dates in category grid.
- [mgr] Fixed decimals in product category grid.
- Added ability to create system setting "ms2_cart_max_count" to override maximum number of products for one operation.
- Fixed placeholders in emails subjects.
- Fixed generation of thumbnails in gallery for working with ImageMagick.
- Fixed link type "Many to many".
- Fixed requirement of non-existing permission "update_document" in processors.
- Added system setting "ms2_price_snippet" for modification of product price.
- Added system setting "ms2_weight_snippet" for modification of product weight.
- Product key in msCartHandler now generates with using "$price" and "$weight", because they can be modified when adding to cart.

Под катом подробнее, и на русском.

Исправления

Починено форматирование дат в таблице товаров админки.

Добавлена возможность создать системный параметр «ms2_cart_max_count», чтобы изменить лимит корзины на количество добавляемых за одну операцию товаров. Сама настройка не создаётся, ибо мало кому будет нужна.

Исправлены пропадающие плейсхолдеры в теме писем.

Внемены изменения в алгоритм генерации превьюшек, и оно теперь дружит с ImageMagick. Это даёт лучшее качество, прозрачный фон при использовании png и возможность кропать с нужного угла картинки.

Исправлена связь «многие ко многим». Глюк заключался в том, что все товары с этой связью соединялись друг с другом. То есть, связали вы 2 товара по цвету, потом начали связывать другие 2 товара, а в итоге вышло, что связаны все 4. Теперь такого нет.
Но если вы случайно (или специально) свяжете 2 товара из разных групп этой связи, то у вас будет одна группа.
То есть, были связи 1-2-3 и 4-5-6, если связать 1 и 5, то получится 1-2-3-4-5-6.
Будьте внимательны.

Исправлено требование несуществующего разрешения в процессорах. Было update_document, стало edit_document.

Улучшения

Добавлены любимые многими настройки:
— ms2_price_snippet
— ms2_weight_snippet

Кто не в курсе, рассказываю. Это фишка первого MS, если в параметре указать сниппет, то цена и вес товара будут проходить через него и их можно будет модифицировать.

Конечно, это медлнее, чем выводить необработанные цену и вес. Но если сильно надо — можно использовать.

Сниппет должен принимать объект $product, из него можно получить что угодно. Также могут передаваться дополнительные параметры в переменной $data:
— объект msCartHandler, если запрос идёт при добавлении в корзину.
— массив $scriptProperties, с параметрами вызова сниппета msProducts, если запрос идёт из него.
— пустота, если запрос идёт при выводе страницы товара.

Самый простой сниппет для цены:
return $product->get('price');

Также теперь ключ добавления товара в корзину формируется с учетом цены и веса, так как вы сможете их менять в зависимости от разных параметров: группы юзера, параметров товара, категории товара и т.д.

Всем спасибо за багрепорты, жду следующих!

Предыдущая заметка
Закрытие проекта miniShop


Комментарии ()

  1. Олег Ракул 10 апреля 2013, 09:51 # 0
    совместимость с новым апдейтом modx 2.2.7 полная?
    иногда сталкивался с тем, что на новых версиях modx компоненты глючили до неработоспособного состояния
    1. Василий Наумкин 10 апреля 2013, 10:15 # 0
      На тестовом сайте всё окей.

      minishop2.com тоже обновил.
    2. Евгений 14 апреля 2013, 18:16 # 0
      Василий, подскажите пожалуйста, как при импорте из файла например, создать товар.со всеми свойствами.
      Пытаюсь сделать по примеру из первого minishop, страница создается а запись о товаре нет.
      Вот текущий код:
      if (!$res_product = $modx->getObject('modResource', array('parent' => $id_sub_category, 'pagetitle' => $pagetitle))) {
      		$res_product = $modx->newObject('modResource');
      
      		$alias = strtolower(strtr($pagetitle, $translit_arr));
      		$uri = strtolower($cat1.$alias_category.'/'.$alias_sub_category.'/'.$alias.'.html');
      
      		$res_product->fromArray(array(
      			'pagetitle' => $pagetitle
      			,'longtitle' => $longtitle
      			,'published' => 1
      			,'parent' => $id_sub_category
      			,'template' => $goods_tpl
      			,'isfolder' => 0
      			,'uri' => $uri
      			,'alias' => $alias
      			,'content' => $content
      			,'class_key' => 'msProduct'
      			,'article' => $article
      			,'price' => $price
      			,'weight' => $weight
      			,'tags' => !empty($tags) ? $tags : null
      			,'source' => 2																				// miniShop2 default media source id
      			,'show_in_tree' => 0
      			// You can comment these three items, if not needed
      			,'old_price' => $old_price																	// Old price from add1
      			,'vendor' => array_key_exists(trim($vendor), $vendors) ? $vendors[trim($vendor)] : 0	// Vendor from add2
      			,'size' => array_map('trim', explode('||', $size))										// Sizes from add3
      			//,'new' => $new
      			//,'popular' => $popular
      			//,'favorite' => $favorite
      		));
      		if ($save) {
      			$res_product->save();
      		}
      	}
      
      1. Василий Наумкин 14 апреля 2013, 18:23 # 0
        Ты создаёшь modResource, а он не умеет автоматически сохранять запись с данными товара.

        Создавать нужно msProduct.
        1. Евгений 14 апреля 2013, 18:31 # 0
          Точно, дошло. Спасибо!
      2. Евгений 15 апреля 2013, 22:11 # 0
        Василий, если не сильно замучил, подскажите направление действий,
        чтобы при импорте прикрепить картинку к продукту.
        Думал чтобы не грузить сам процесс импорта: загрузить все фото сразу на сервер, а при импорте просто указать путь до файла. А как запустить генерацию превью для него.
        Сумбурно, но надеюсь смысл понятен.
        1. Василий Наумкин 16 апреля 2013, 06:31 # 0
          Так не получится.

          Есть экспериментальная конвертация из MS1 в директории /core/components/minishop2/convert/ms1/ — вот в ней есть файлы для импорта товаров и изображений.

          Разбирайся, код прокомментирован.

          1. Евгений 16 апреля 2013, 23:43 # 0
            Что не могу понять в чем ошибка:
            	$img = "assets/images/products/test/Penguins.jpg"
            	$id_product = $res_product->get('id');
                    //$tmp = explode('/', $img);
                    $fileImg['id'] = $id_product;
                    $fileImg['name'] = 'filename';
                	$fileImg['file'] = MODX_BASE_PATH.$img;
                    $fileImg['rank'] = 1;
            
                	$response = $modx->runProcessor('gallery/upload', $fileImg
            		, array('processors_path' => dirname(__FILE__).'/processors/'));
                	//if ($response->isError()) {
            
            Код отрабатывает — файл не подгружается к товару с заданным id.
            Закоментированный код вызывает ошибки:
            //$tmp = explode('/', $img);
            — зависает на долго и падает(Allowed memory size of 134217728 bytes exhausted )

            //$response->isError()
            — не найден метод

            Код вызывается в сниппите, после создания или обновления товара

            Спасибо огромное за помощь.
            1. Василий Наумкин 17 апреля 2013, 06:24 # 0
              Путь dirname(__FILE__) при запуске из сниппета и из моего файла будет совершенно разный.

              Указывай полный:
              MODX_CORE_PATH . 'components/minishop2/convert/ms1/processors/';


              1. Евгений 20 апреля 2013, 20:51 # 0
                Так все работает, спасибо большое, картинки подгружаются, но почему поля image и thumb товара не заполняются, пробовал выставлять rank в 0 — не помогло. Спасибо.
        2. Stan 04 марта 2014, 13:54 # 0
          Добавлены любимые многими настройки:
          — ms2_price_snippet
          — ms2_weight_snippet
          Где найти эти настройки?

          Добавление новых комментариев отключено.