Отключить все модификации товара если его нет в файле

На сайте установлен 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();
}
который включает модификацию, если артикль есть в файле. Вопрос в том, как отключить все остальные модификации, которых нет в файле?
Буду благодарен за любую помощь и наводку
Дмитрий
02 ноября 2022, 17:11
modx.pro
529
0

Комментарии: 5

Дмитрий
02 ноября 2022, 19:33
0
пока в голову пришло только с начало отключить все модификаторы, а потом включать те, что есть в файле
$modifications = $modx->getCollection('msopModification');
foreach ($modifications as $modification) {
	$modification->active = 0;
	$modification->save();
}


но может есть более рациональный способ?
    Артур Шевченко
    02 ноября 2022, 21:44
    +1
    В целом мысль здравая. Но лучше использовать метод $modx->getIteraror(). И выбирать модификации только текущего ресурса.
      Дмитрий
      03 ноября 2022, 11:54
      0
      появилась еще одна проблема
      if( $modification = $modx->getObject('msopModification', array('article'=> $cellY[0] )) ){
      если на сайте несколько одинаковых артиклей, то меняет не все, а только первый
      как это можно исправить?
        Артур Шевченко
        03 ноября 2022, 14:10
        0
        $modifications = $modx->getObject('msopModification', array('article'=> $cellY[0] );
        foreach($modifications as $modification){
        // тут остальное
        }
          Дмитрий
          06 ноября 2022, 20:23
          0
          спасибо большое за помощь!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5