Отключить все модификации товара если его нет в файле
На сайте установлен msOptionsPrice2. Есть файл domovoy.xlsx с артиклями модификаций. И есть php
Буду благодарен за любую помощь и наводку
if ( $xlsx = SimpleXLSX::parse(dirname(__FILE__).'/assets/bitrix/domovoy.xlsx') ) {
$belor = SimpleXLSX::parse(dirname(__FILE__).'/assets/bitrix/domovoy.xlsx');
$importBarcodeArr = $belor->rows();
$importBarcodeCount = 0;
foreach($importBarcodeArr as $k => $cellY){
if($k == 0){
continue;
}
if( $modification = $modx->getObject('msopModification', array('article'=> $cellY[0] )) ){
echo 'FOUND barcode '.$cellY[0].'</br>';
$modification->active = 1;
$modification->save();
}
}
echo $importBarcodeCount.' - done';
} else {
echo SimpleXLSX::parseError();
}
который включает модификацию, если артикль есть в файле. Вопрос в том, как отключить все остальные модификации, которых нет в файле?Буду благодарен за любую помощь и наводку
Комментарии: 5
пока в голову пришло только с начало отключить все модификаторы, а потом включать те, что есть в файле
но может есть более рациональный способ?
$modifications = $modx->getCollection('msopModification');
foreach ($modifications as $modification) {
$modification->active = 0;
$modification->save();
}
но может есть более рациональный способ?
В целом мысль здравая. Но лучше использовать метод $modx->getIteraror(). И выбирать модификации только текущего ресурса.
появилась еще одна проблема
как это можно исправить?
if( $modification = $modx->getObject('msopModification', array('article'=> $cellY[0] )) ){
если на сайте несколько одинаковых артиклей, то меняет не все, а только первыйкак это можно исправить?
$modifications = $modx->getObject('msopModification', array('article'=> $cellY[0] );
foreach($modifications as $modification){
// тут остальное
}
спасибо большое за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.