Ann

Ann

С нами с 02 сентября 2019; Место в рейтинге пользователей: #640
Ann
Ann
08 сентября 2019, 05:04
2
+1
Было решено написанием плагина, сохраняющим артикулы модификаций в аннотацию при сохранении товара.
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormSave':

        $modpar = array(
          'rid' => $id
        );

        $mod = $modx->getCollection('msopModification', $modpar);
    
        $datamod = array();

        if ($mod){
          foreach ($mod as $v){
            $qi = ['mid' => $v->get('id')];
            $opt = $modx->getObject('msopModificationOption', $qi);
            $val = '';
            if ($opt){
              $val .= $v->get('article');
            }
            $datamod[] = $val;
            $intro = implode(",", $datamod);
          };
            $res = $modx->getObject('modResource', $id);
            $res->set('introtext', $intro);
            $res->save();  
        }
        break;
}
Для обновления существующих товаров:
if(!$docs = $modx->getCollection('modResource', array(
    'template' => 7
))){return;}
foreach($docs as $doc){
    $q = $doc->get('id');
    $modpar = array(
      'rid' => $q
    );

    $mod = $modx->getCollection('msopModification', $modpar);

    $datamod = array();

    if ($mod){
      foreach ($mod as $v){
        $qi = ['mid' => $v->get('id')];
        $opt = $this->modx->getObject('msopModificationOption', $qi);
        $val = '';
        if ($opt){
          $val .= $v->get('article');
        }

        $datamod[] = $val;
        $intro = implode(",", $datamod);
      };

        $doc->set('introtext',$intro);
        $doc->save();
    }
}