web3

web3

С нами с 13 сентября 2017; Место в рейтинге пользователей: #305
Володя
16 ноября 2017, 11:57
1
+1
— вызов в mFilter2
Для вывода слайдера цен с учетом модификаций необходимо положить кастомный класс фильтрации в папку и указать в настройке mse2_filters_handler_class класс msopFilters
/core/components/msearch2/custom/filters/
[[!mFilter2?
	&limit=`5`
	&parents=`0`
	&element=`msProducts`
	&setMeta=`1`
	&filters=`
		msop|price:number
		msoption|size
	`
	&tpls=`tpl.msProducts.row,tpl.msProducts.row`
	&class=`msProduct`
	&sort=`ms|price:desc`
	&tplOuter=`tpl.mFilter2.outer`

	&tplFilter.outer.msop|price=`tpl.mFilter2.filter.slider`
	&tplFilter.row.msop|price=`tpl.mFilter2.filter.number`
]]
Можно обновить пакет и применить вышеизложенное.
web3
16 ноября 2017, 09:46
2
0
Добрый день! Возможно ли как-то отсортировать вывод опций в другом порядке?
web3
15 ноября 2017, 12:57
1
0
Может кто сталкивался с изменением цен у товаров в каталоге при фильтрации? Фильтруешь товары с опциями, а в каталоге у товаров даже цена не изменяется. Это как-то решено?
web3
25 сентября 2017, 09:23
1
0
-Да, завязан жестко, т.к. не предполагалось унифицированного решения для всех, хотя такое имеет место быть. Связка упомянутых выше компонентов показалась наиболее удачным решением проблемы импорта и торговых предложений. А поделиться решил на тот случай, если будут такие же как я, нуждающиеся в импорте и примерах, хоть и кривых, но рабочих.
-В транслит перегоняю дабы оставить кириллические названия переменных от 1-с там где они есть и не плодить их дальше(хотя по всем данным, можно и кириллицу юзать без проблем, но не будем холиварить).
-По поводу того, что цены в это время где-то в сессии лежат в душе не чаял, если буду оптимизировать сей продукт учту.
-Тут есть грешок, исправил)
web3
19 сентября 2017, 07:45
1
0
Я правильно понял, что для создания модификации достаточно сформировать входной массив
$modification = array(
              'price' => $price,
              'old_price' => $old_price,
              'article' => $article,
              'weight' => '',
              'count' => $count,
              'options' => array(
                'color' =>  $color,
                'size' => $size
                )
        );
А затем вызвать событие
$modification = $modx->call('msopModification', 'saveProductModification', array(&$modx, $rid, $modification));
Окей, все сделал, но почему-то модификации не создались.
Вот что попадает во входные переменные
[mSyncOnProductOffers]int(162)/*это $rid*/
array(5) {/*а это $modification*/
  ["price"]=>
  string(6) "675.00"
  ["article"]=>
  int(2200000076250)
  ["weight"]=>
  string(0) ""
  ["count"]=>
  int(2)
  ["options"]=>
  array(2) {
    ["color"]=>
    string(12) "черный"
    ["size"]=>
    string(1) "M"
  }
}
web3
19 сентября 2017, 06:59
1
0
Только что попробовал, к сожалению без этого куска совсем не запустилось, не заполнились необходимые свойства и модификации было не из чего создавать…
web3
18 сентября 2017, 05:11
1
0
Плагин вешаем на событие «mSyncOnProductOffers».
web3
15 сентября 2017, 10:36
1
0
Уже не актуально. Сделал сам.
web3
15 сентября 2017, 09:36
1
0
Сделал аналогично, не сработало. И ничего не написало.
if(isset($array['Obhvat'])){
            $size=$array['Razmer']."/".$array['Obhvat'];
        }
        else{
            $size=$array['Razmer'];
        }
    if(isset($array['Cvet'])){
            $color=$array['Cvet'];
        }
    
    if(isset($array[prices]["f282d7ca-2726-11e3-a84f-0002a54e8623"])){
        $price = $array[prices]["f282d7ca-2726-11e3-a84f-0002a54e8623"];
        $old_price =  $array[prices]["f282d7c9-2726-11e3-a84f-0002a54e8623"];
    }
    else{
        $price =  $array[prices]["f282d7c9-2726-11e3-a84f-0002a54e8623"];
    }
    $rid =  $array[id];
    $mid=intval(addslashes((string)$xml->Штрихкод));
 
    $count=intval(addslashes((string)$xml->Количество));
    $article = $mid;
    /* опции модификации */
    $options = array(
        'color' =>  $color,
        'size' => $size
    );
    $msoptionsprice = $modx->getService('msoptionsprice');
    $msoptionsprice->initialize('web');
    /* создаем опции продукта */
    //$options = $msoptionsprice->setProductOptions($rid, $options);
   
    
    /* создаем модификацию */
    if((isset($old_price))&&($old_price!=NULL)){
        $modification = array(
         
          'price' => $price,
          'old_price' => $old_price,
          'article' => $article,
          'weight' => '',
          'count' => $count,
          'options' => array(
            'color' =>  $color,
            'size' => $size
            )
        );
    }
    else{
         $modification = array(
          'price' => $price,
          'article' => $article,
          'weight' => '',
          'count' => $count,
          'options' => array(
            'color' =>  $color,
            'size' => $size
            )
        );   
    }
    
     /* создаем опции модификации */
    $modification = $modx->call('msopModification', 'saveProductModification', array(&$modx, $rid, $modification));
web3
15 сентября 2017, 08:38
1
0
Добрый день, попытался добавить опции товара по инструкции выше и что-то пошло не так. Создается модификация, но у нее нет свойств. Пытаюсь добавить еще одну вручную, а у нее уже есть 2 опции и другие выбрать не могу, удаляю одну из модификации и на ее месте появляется новое(такое же свойство) но с другим значением…
$rid =  $array[id];
    $mid=intval(addslashes((string)$xml->Штрихкод));
 
    $count=intval(addslashes((string)$xml->Количество));
    $article = $mid;
    /* опции модификации */
    $options = array(
        'color' =>  $color,
        'size' => $size
    );
    $corePath = $modx->getOption('msoptionsprice_core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/msoptionsprice/');
    $msoptionsprice = $modx->getService('msoptionsprice', 'msoptionsprice', $corePath . 'model/msoptionsprice/', array('core_path' => $corePath));
    /* создаем опции продукта */
    $options = $msoptionsprice->setProductOptions($rid, $options);
    /* создаем опции модификации */
    $modx->call('msopModificationOption', 'saveOptions',array(&$modx, $mid, $rid, $options));
    
    /* создаем модификацию */
    if((isset($old_price))&&($old_price!=NULL)){
        $modification = array(
          'rid' => $rid,
          'type' => 1,
          'price' => $price,
          'old_price' => $old_price,
          'article' => $article,
          'weight' => '',
          'count' => $count,
          'active' => 1
        );
    }
    else{
         $modification = array(
          'rid' => $rid,
          'type' => 1,
          'price' => $price,
          'article' => $article,
          'weight' => '',
          'count' => $count,
          'active' => 1
        );   
    }
    
    
    $response = $modx->runProcessor('modification/create', $modification, array(
      'processors_path' => MODX_CORE_PATH.'components/msoptionsprice/processors/mgr/'
    ));
    
    if ($response->isError()) {
В итоге в консоле пишет что цена должна быть уникальной…
Array
(
    [success] => 
    [message] => 
    [total] => 1
    [errors] => Array
        (
            [0] => Array
                (
                    [id] => price
                    [msg] => Это поле должно быть уникально
                )

        )

    [object] => Array
        (
        )

)
Да вообще все сломалось и не получается создать модификацию)