Поиск по артикулу модификации [Решено]
        Добрый день:)
При добавлении артикулов к модификациям в msOptionsPrice2, поиска по ним в админке в таблице minishop2, да и через msearch2 на сайте не происходит, можно ли как-то это настроить?
    
    
                                                                                
            При добавлении артикулов к модификациям в msOptionsPrice2, поиска по ним в админке в таблице minishop2, да и через msearch2 на сайте не происходит, можно ли как-то это настроить?
Комментарии: 3
                Было решено написанием плагина, сохраняющим артикулы модификаций в аннотацию при сохранении товара.
                    $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();
    }
}            
                Еще как вариант, можно писать их а алиас.            
                    
                Думаю стоить дополнить этот пост раз он есть в поиске. Во-первых на мой взгляд решение не самое лучшее, но достаточно простое, поэтому я его немного переделал для компактности
ПЛАГИН
                    ПЛАГИН
<?php
switch ($modx->event->name) {
    case 'OnDocFormSave':
        $sql = 'SELECT article FROM modx_msop_modifications WHERE rid= ?';
        $statement = $modx->prepare($sql);
        if ( $statement->execute(array($id)) ) {
            $result = $statement->fetchAll(PDO::FETCH_COLUMN);
        }
        $resource->set('introtext', implode(',',$result));
        $resource->save();
    break;
}КОД ДЛЯ КОСОЛИ, чтобы обновить товары<?php
$resources = $modx->getIterator('msProduct');
foreach ($resources as $resource) {
    $id = $resource->get('id');
    $sql = 'SELECT article FROM modx_msop_modifications WHERE rid= ?';
    $statement = $modx->prepare($sql);
    if ( $statement->execute(array($id)) ) {
        $result = $statement->fetchAll(PDO::FETCH_COLUMN);
    }
    $resource->set('introtext', implode(',',$result));
    $resource->save();
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.