Последние темы


Доброго дня! Возникла проблема с catalogfill modx revo версия catalogfill 2,7

  • Суть проблемы.
    Товары на сайте импортируются в таблицу migx_db , в конфиге catalogfill добавляю дополнительный столбец со старой ценой товара. Соответственно в чанке добавляю необходимое дополнительное поле. Но почему то в результате импорта, отображается совершенно рандомная стоимость. Т.е. таких чисел не было в таблице.
    При импорте пишет вот что:Консоль запущена...
    [pThumb Cache Manager] Clean Level: 0 || Max Age: 30 days || Max Size: 100 MB || Max Files: 10000
    :: Skipping cache cleanup based on settings

    Подскажите пожалуйста как решить проблему?

  • шопкипер 3
    версия катлогфилла 2,7
    импорт происходит из книги ексель

  • @Andchir для кэширования ничего не установлено

  • Эта запись удалена!
  • Эта запись удалена!
  • <?php
    
    //Название класса таблицы товаров в БД
    $cf_config['className'] = 'shopContent';
    //Название пакета таблицы товаров в БД
    $cf_config['packageName'] = 'shop';
    //Название поля ID родителя
    $cf_config['parent_field'] = 'resource_id';
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Категория',array(3,'category')),//3 - ID шаблона категории
        array('Подкатегория',array(5,'category')),//3 - ID шаблона подкатегории
        array('Артикул',array('articul','content')),
            array('Код',array('codeT','content')), //Добавить в базу
        array('Наименование',array('pagetitle','content')),
        array('Цена розничная',array('price','content')), //Цена розничная
         array('Цена розничная после деноминации',array('priceOldFile','content')), //Цена розничная после деноминации
            array('ЦенаОпт',array('priceOpt','content')), //Цена оптовая Добавить в базу
            array('Цена Оптовая',array('priceOldOptFile','content')), //Цена оптовая после деноминации
            array('Объем закупки',array('minV','content')), //Добавить в базу
            array('Шаг объема',array('stepV','content')), //Добавить в базу
            array('Единица измерения',array('izm','content')), //Добавить в базу
        array('Количество',array('inventory','content')),    
        array('Картинка',array('image','content')),
        array('Краткое описание',array('introtext','content')),
        array('Подробное описание',array('content','content')),
            array('новый товар',array('newT','content')),
            array('Лидер продаж',array('liderT','content')),
            array('Спец предложение',array('specT','content')),
            array('Производитель',array('param1','content')),
            array('Импортер',array('importer','content')),
            array('Сервисный центр',array('scenter','content')),
            array('Гарантия',array('garant','content')),
            
            array('Сечение',array('sechenie','content')),
            array('Марка',array('marka','content')),
            array('Цвет',array('color','content')),
            array('Производитель',array('brand','content')),
            array('Обозначение',array('oboz','content')),
            array('КоличетвоПолюсов',array('countPol','content')),
            array('Ампераж',array('amperaj','content')),
            array('ТипУстановки',array('typeUst','content')),
            array('Размер',array('size','content')),
            array('ТипИзделия',array('typeIzd','content')),
            array('Цвет',array('color2','content')),
            array('Сечение',array('sechenie2','content')),
            array('Количество Контактов',array('countCont','content')),
            array('Мощность',array('power','content')),
            array('Цоколь',array('cokol','content'))
            
          /*  
            array('МатериалКорпуса',array('material','content')),
            array('СтепеньЗащиты',array('stepenZ','content')),
            
            
            */
            
            
            
            
           
    );
    
    	
    
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 1
            //'createdon' => strtotime("now")
            //'publishedon' => strtotime("now")
            //'pub_date' => strtotime("now")
            //'editedby' => 1
            //'editedon' => strtotime("now")
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 300;
    
    //разбивать по категориям
    $cf_config['include_categories'] = true;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $cf_config['delete_subcategories'] = false;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = 'pagetitle';
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = false;
    
    //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field)
    $cf_config['imp_if_not_exist'] = true;
    
    //удалять HTML-теги при экспорте
    $cf_config['exp_strip_tags'] = false;
    
    //автоматически генерировать псевдоним (alias) при импорте
    //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит.
    $cf_config['imp_autoalias'] = true;
    
    //Изменить значения поля для всех вложенных товаров до начала импорта.
    //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе.
    //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым)
    $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены
    
    //удалить файл после экспорта (скачивания)
    $cf_config['exp_delete_file'] = false;
    
    //кодировка CSV-файла при экспорте
    $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251'
    
    //Импортировать (обновлять) пустые значения
    $cf_config['imp_empty'] = true;
    
    //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import".
    $cf_config['imp_custom_processor'] = '';
    
    //путь (xpath) в XML структуре до товаров
    $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = '';
    
    //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок.
    $cf_config['imp_testmode'] = false;
    
    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        
        if(isset($output_arr['content']['pagetitle']))
            $output_arr['content']['pagetitle'] = str_replace("*","х",$output_arr['content']['pagetitle']);
        
        if(isset($output_arr['content']['image']))
            $output_arr['content']['image'] = "images/".$output_arr['content']['image'];
        if(isset($output_arr['category']['0']['0']))
            $output_arr['category']['0']['1'] = str_replace(array("32. ","31. ","30. ","29. ","28. ","27. ","26. ","25. ","24. ","23. ","22. ","21. ","20. ","19. ","18. ","17. ","16. ","15. ","14. ","13. ","12. ","11. ","10. ","9. ","8. ","7. ","6. ","5. ","4. ","3. ","2. ","1. "),"",$output_arr['category']['0']['1']);
        if(isset($output_arr['category']['1']['0']))
            $output_arr['category']['1']['1'] = str_replace(array("32. ","31. ","30. ","29. ","28. ","27. ","26. ","25. ","24. ","23. ","22. ","21. ","20. ","19. ","18. ","17. ","16. ","15. ","14. ","13. ","12. ","11. ","10. ","9. ","8. ","7. ","6. ","5. ","4. ","3. ","2. ","1. "),"",$output_arr['category']['1']['1']);
        return $output_arr;
    }
    
    
    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        //var_dump($value_arr,$output_arr);
        //exit;
        /*
        if(isset($output_arr['price']))
            $output_arr[1] = floatval($output_arr[1]) - 200;
        */
        return $output_arr;
    }
    
    
    ?>```
  • <div class="row item product shk-item string">
        <div class="columns large-3 small-3 medium-3">
            <div class="product-img small-img">  
              <a href="[[~[[+resource_id]]]][[+alias]].html">
                    <img class="shk-image shk-image2" src="[[+image:is=``:then=`images/no-image-200.png`:else=`[[+image:pthumb=`w=180&h=180&zc=0&f=png&bg=#FFF`]]`]]" alt="" />
                </a>
            </div>
        </div>
        <div class="columns large-4 small-4 medium-4"> 
            <div class="product-name">
                <a href="[[~[[+resource_id]]]][[+alias]].html"><strong>[[+pagetitle:replace=`*==х`]]</strong></a>
            </div>
             <div class="product-descr">
                [[+introtext]] 
            </div>
        </div> 
        <div class="columns large-2 small-2 medium-2">
            <div class="product-price priceStr">
    <span class="shk-price ">[[+price:checkPrice=`[[+priceOpt]]`:num_format]]</span> <!--[[!checkPriceInput:is=`__priceOptFile`:then=`<br>рублей без НДС`:else=`руб.`]]  <br><br>          <!--<span class="round alert label preview"><a href="#" data-reveal-id="myModalPreview" data-reveal-ajax="[[~887]]?previewid=[[+id]]">Предпросмотр</a></span>-->
            </div>
           <div class="product-price1">
          <span class="shk-price">[[*priceOldFile:checkPrice=`[[*priceOptOld]]`:num_format]] </span> [[!checkPriceInput:is=`__priceOptFile`:then=`<br>рублей без НДС`:else=`руб.`]]  
        </div> 
        </div>
        <div class="columns large-3 small-3 medium-3">
            <div class="product-order text-center">
        <form action="[[~[[*id]]]]" method="post">
                <input type="hidden" name="ordertype__[[+id]]__add" value="[[!checkPriceInput?]]" />
                <input type="hidden" name="codeT__[[+id]]__add" value="[[+codeT]]" />
                <input type="hidden" name="articul__[[+id]]__add" value="[[+articul]]" />
                <input type="hidden" name="izm__[[+id]]__add" value="[[+izm]]" />
                <input type="hidden" name="shk-id" value="[[+id]][[!checkPriceInput?]]" />
                <input type="hidden" name="shk-name" value="[[+pagetitle]]" />
                <input type="hidden" name="shk-catalog" value="1" />
                <h1></h1>
                <input type="hidden" name="shk-price" class="shk-price" value="[[+price:checkPrice=`[[+priceOpt]][[+beznal]]`]]" />
                  <!-- <input type="number" name="shk-count" id="shk-count" value="0" min="2" max="26" step="2"/> -->
                    <!--<button class="shk_count_button minus" data-extend="[[+id]][[!checkPriceInput?]]" type="button">-</button>
                     <input class="shk-count" type="number" size="2" name="shk-count" id="myinput[[+id]][[!checkPriceInput?]]"  
                        value="1" min="[[+minV]]" 
                        [[+inventory:is=`-1`:then=``:else=`max="[[!replaceCount? &price=`[[+inventory]]`]]"`]] 
                        [[+stepV:is=`1`:then=`[[+izm:is=`м`:then=`step="0.001"`:else=`step="1"`]]`:else=`step="[[!replaceCount? &price=`[[+stepV]]`]]"`]]
                    style="display: inline;width: 70px;line-height: 20px;height: 35px;">
                    <button class="shk_count_button plus" data-extend="[[+id]][[!checkPriceInput?]]" type="button">+</button>-->
                    <!--<div class="product-izm">
                      <span class="izm">
                      [[+inventory:is=`-1`:then=`0`:else=`
                              [[+inventory:is=`0`:then=`Под заказ от [[+minV]]`:else=`[[+inventory]]` ]]`
                      ]]
                              
                              [[+izm]]</span>
                    </div>--> 
           <div class="product-price">
                    <button type="submit" class="shk-but myButton" [[+inventory:is=``:then=` disabled>Нет на складе`:else=`>В корзину`]]</button>
                </div>
                
        </form>
        </div>
        </div>
    </div>
    

    Чанк product_list

  • Я так и не понял какая связь между импортом и чанком вывода. Проверять импорт надо в админке, а не во внешней части сайта смотреть. Если в админке всё нормально, тогда CatalogFill упонимань вообще не нужно, чтобы не вводить в заблуждение себя и других. Поправьте.
    Уберите всё лишнее из чанка, что там закомментировано. Почему кто-то должен разбираться в ваших комментариях?

 

Последние комментарии

  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

    Читать далее
  • J

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее
  • J

    Участник @Jokerit написал в TagManager2 отображает в фильтре удаленные значения TV-полей:

    tmRefresh

    Так и не смог найти как включить

    Читать далее