Модификация CatalogFill для MODX Evolution - изменение каталога импорта

CatalogFill - довольно старый модуль, но до сих пор много где используется. В нем есть замечательная возможность - фильтровать параметры товаров при импорте/экспорте. Однако, он фильтрует только ТВ, а имена каталогов - берет как есть и нет возможности их сменить. То есть, если вам нужно импортировать товар в папку "Пилотки", а от поставщика приходит файл с "Пилотка" в соответствующем поле, через filter_import вы это не исправите, надо править файлик импорта, а это очень неудобно. Гораздо проще заменять через filter_import сделать замену.

Чтобы эту возможность получить - надо поправить код модуля. А именно:

В файле assets/modules/catalogFill/classes/catalogfill.class.php производим две идентичные правки:

в районе 175 строки, вместо

    
                    //parent
            if(isset($tempArr['category'])){
                $tempArr['content']['parent'] = $this->setParentCategory($tempArr['category'],$parent_id);
            }else{
                $tempArr['content']['parent'] = $parent_id;
            }
            //alias
            if($this->config['imp_autoalias']){
                $tempArr['content']['alias'] = $this->makeAlias($tempArr['content']['pagetitle']);
            }
            
            $insertArr[] = filter_import($tempArr);
            
            $count++;
    

прописываем


     $tempArr = filter_import($tempArr);
			
            //parent
            if(isset($tempArr['category'])){
                $tempArr['content']['parent'] = $this->setParentCategory($tempArr['category'],$parent_id);
            }else{
                $tempArr['content']['parent'] = $parent_id;
            }
            //alias
            if($this->config['imp_autoalias']){
                $tempArr['content']['alias'] = $this->makeAlias($tempArr['content']['pagetitle']);
            }
            
            $insertArr[] = $tempArr;
            
            $count++;

Аналогичным образом поступаем в районе 252 строки, меняем


                //parent
            if(isset($tempArr['category'])){
                $tempArr['content']['parent'] = $this->setParentCategory($tempArr['category'],$parent_id);
            }else{
                $tempArr['content']['parent'] = $parent_id;
            }
            //alias
            if(empty($tempArr['content']['alias']) && $this->config['imp_autoalias']){
                $tempArr['content']['alias'] = $this->makeAlias($tempArr['content']['pagetitle']);
            }
            
            $insertArr[] = filter_import($tempArr);

на следующее:


                $tempArr = filter_import($tempArr);

            //parent
            if(isset($tempArr['category'])){
                $tempArr['content']['parent'] = $this->setParentCategory($tempArr['category'],$parent_id);
            }else{
                $tempArr['content']['parent'] = $parent_id;
            }
            //alias
            if(empty($tempArr['content']['alias']) && $this->config['imp_autoalias']){
                $tempArr['content']['alias'] = $this->makeAlias($tempArr['content']['pagetitle']);
            }
            
            $insertArr[] = $tempArr;
            
            $count++;

То есть мы делаем простую вещь - изначально пропускаем массив через filter_import, а не после того, как оттуда обработаются значения категории


Теги: Evolution, костыли, шпаргалки, CatalogFill

Помогла статья? Угости чашкой кофе =)

Сообщение отправлено

Закрыть