Сохранить
Сохраняем
  • prokesha

    @Andchir

    Потому, что я выбираю "Каталог", что бы обновить все цены допустим и характеристики, а если новый товар, то он добавляет, вот и вопрос catalogfill умеет допустим ли такое, если у меня появился новый товар, что бы он его положил в определенную папку ? И как это сделать!? В какой функции смотреть!?

    написал в Поддержка Читать далее
  • prokesha

    Добрый ночи! Я понимаю, что проект Catalogfill сейчас не обновляется!

    Подскажите пожалуйста, когда обновляю товары через Catalogfill, т.е. цены, характеристики все хорошо! А вот новый товар, который не нашел в XML, складывает на корень каталога, можно ли, как то сделать, что бы новые товары выкладывал в определенную папку каталога ?

    Куда смотреть ? И что можно в конфиге прописать ?

    Конфиг такой:

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
    //    array('Заголовок',array('pagetitle','content')),                       
        array('Расширенный заголовок',array('longtitle','content')), 
        array('Цена',array(3,'tv')),
        array('Площадь плитки',array(10,'tv')),
        array('Количество в упаковке,м2',array(29,'tv')),
        array('Код товара',array(33,'tv')),
        array('Картинка',array(1,'tv'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 2// ID шаблона товара
            //'description' => '',
            //'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'] = true;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = 'code';
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = 33; //tv-33 - артикул товара
    
    //Добавлять товары, которые не найдены при обновлении по 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'] = '/*Feed/Nomenclatures';  //'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = <<<EOF
    
    <Nomenclature>
                 <Name>pagetitle</Name>
                 <Code>tv33</Code>
                 <Name>longtitle</Name>
                 <PriceTrade>tv3</PriceTrade>
    
                 <PackSize2>tv29</PackSize2>
                 <Quantity>tv47</Quantity>
         <Images>
                 <I>tv1</I>
         </Images>
    
    </Nomenclature>
    
    
    EOF;
    
    //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок.
    $cf_config['imp_testmode'] = false;
    
    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr) {
       
        $imagesDirUrl = MODX_BASE_URL .   'uploads/';
        $imagesDirPath = MODX_BASE_PATH . 'images/uploads/';
    
    /*
        if (isset($value_arr['tv'])) {
        var_dump($value_arr['tv']); exit;
        }
     */
         $output_arr = $value_arr;
     
             if(isset($output_arr['tv']['1'])) {
                
         $imageFilePath = $imagesDirPath . str_replace(['%20', ' '], '_', 
         
                     basename(trim(urldecode($output_arr['tv']['1']))));
               
             if (!file_exists($imageFilePath)) {
                     
                     sleep(0.5);
                     
                     file_put_contents($imageFilePath, file_get_contents(trim(urldecode($output_arr['tv']['1']))));
    }
         $output_arr['tv']['1'] = $imagesDirUrl . basename($imageFilePath);
    
       
        }
        
            if(isset($output_arr['tv']['3'])){
            $output_arr['tv']['3'] = round(floatval($output_arr['tv']['3']) * 0.1);
                
            }
        return $output_arr;
    
    }
        /*
         
        $output_arr = $value_arr;
        
        if(isset($output_arr['tv'])) {
            $imageFilePath = $imagesDirPath . basename($output_arr['tv']);
            if (file_exists($imageFilePath)) {
                file_put_contents($imageFilePath, file_get_contents(trim($output_arr['tv'])));
            }
            $output_arr['tv'] = $imagesDirUrl . basename(trim($output_arr['tv']));
        }
        
        
         if(isset($output_arr['content']['pagetitle']))
         $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8');
      
    
        */
    
    
    
    //функция для фильтрации значений при ЭКСПОРТЕ
    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;
    }
    
    ?>
    

    Т.е. он складывает
    0_1595975076218_8d074188-034f-4b5b-85e0-fe8df93bad39-image.png

    написал в Поддержка Читать далее
  • prokesha

    @Andchir Не могу понять в как сниппете!? У меня выводит по 3 категории на 3, т.е. 9 категорий, хотелось бы по 3 на 6 допустим Каталог

    Кусок вывода каталога

    						</ul>
                            [[!pdoPage?
                                &parents=`[[+filter.id]]`
                                &limit=`[[+filter.limit]]`
                                &sortby=`[[+filter.sort]]`
                                &useWeblinkUrl=`1`
                                &tpl=`collection.item`
                                &tplWrapper=`@INLINE <div class="archive-entry">[[+output]]</div>`
                                &outputSeparator=`</div><div class="archive-entry">`
                                &leftJoin=`[[+filter.join]]`
                                &groupby=`modResource.id`
                            	&select=`[[+filter.select]]`
                                &includeTVs=`image`
                                &prepareTVs=`image`
                                &where=`[[+filter.where]]`
                                [[-&showLog=`1`]]
                                &tplPageWrapper=`@INLINE <button class="reload-btn"><div class="reload-btn-content"><svg class="icon svg-icon icon-reload svg-icon-reload "><use xlink:href="[[~1]]tmpl/images/sprite.svg#reload"></use></svg><span class="title">Загрузить еще</span></div></button>
                                <ul class="pagination justify-content-center js-pagination">
                                    [[+pages]]
                                </ul>`
                                &tplPage=`@INLINE <li class="page-item"><a href="[[+href]]" class="page-link">[[+pageNo]]</a></li>`
                                &tplPageActive=`@INLINE <li class="page-item active"><span class="page-link">[[+pageNo]]</span></li>`
                                &tplPageSkip=`@INLINE <li class="page-item disabled"><span class="page-link">...</span></li>`
                                &toPlaceholder=`listing`
                            ]]
                            [[+listing:ne=``:then=`<div class="production-archive ajax-result" id="production-archive">
                                [[+listing]]
                            </div>
                            <br><br><br><div class="paginate-links js-paginate-links ajax-pagination">
                            [[!+page.nav]]
                            </div>
                            `:else=`<p>&nbsp;</p><p>Пусто...</p>`]]
    						<div class="page-section">
    						    [[*description:notempty=`<div class="section-headline">
    								<div class="h1">[[*description]]</div>
    							</div>`]]
    							<div class="textblock">
    								[[*content]]
    							</div>
    

    написал в Общие вопросы Читать далее
  • prokesha

    Исправил код, вроде ошибки нету в микроразметки и все на месте, а куда то девался загрузчик сайта?

    [[pdoCrumbs?
        &showAtHome=`1`
        &showHome=`1`
        &exclude=`[[*id:ne=`2`:then=`2`]]`
        &outputSeparator=``
        &tplWrapper=`@INLINE <nav itemscope="breadcrumb-area" itemtype="http://schema.org/BreadcrumbList" <div class="container"><ol class="breadcrumb">[[+output]]</ol></div></nav>`
    	&tpl=`@INLINE <li itemscope="breadcrumb-item" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item"><a title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
    	&tplCurrent=`@INLINE <li itemscope="breadcrumb-item active" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item active"><a title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
        &tplHome=`@INLINE <li itemscope="breadcrumb-item" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item"><a rel="nofollow" title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
        &tplMax=``
    ]]
    

    написал в Общие вопросы Читать далее
  • prokesha

    Добрый вечер! Подскажите пожалуйста в чем ошибка в коде чанка? Хочу добавить микроразметку в хлебные крошки! Хлебные крошки убегают в левую часть экрана(

    Код был такой

    [[pdoCrumbs?
        &showAtHome=`0`
        &showHome=`1`
        &exclude=`[[*id:ne=`2`:then=`2`]]`
        &outputSeparator=``
        &tplWrapper=`@INLINE <nav class="breadcrumb-area" aria-label="breadcrumb"><div class="container"><ol class="breadcrumb">[[+output]]</ol></div></nav>`
        &tpl=`@INLINE <li class="breadcrumb-item"><a href="[[+link]]">[[+menutitle]]</a></li>`
        &tplCurrent=`@INLINE <li class="breadcrumb-item active" aria-current="page">[[+menutitle]]</li>`
        &tplHome=`@INLINE <li class="breadcrumb-item"><a href="[[+link]]">Главная</a></li>`
        &tplMax=``
    ]]
    

    Переделал в микроразметки:

    [[pdoCrumbs?
        &showAtHome=`0`
        &showHome=`1`
        &exclude=`[[*id:ne=`2`:then=`2`]]`
        &outputSeparator=``
    	&tpl=`@INLINE <li itemscope="breadcrumb-item" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item"><a title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
        &tplHome=`@INLINE <li itemscope="breadcrumb-item" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item"><a rel="nofollow" title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
    	&tplWrapper=`@INLINE <ol itemscope="breadcrumb-area" itemtype="http://schema.org/BreadcrumbList" class="breadcrumb">[[+output]]</ol>`
    	&tplCurrent=`@INLINE <li itemscope="breadcrumb-item active" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item active"><a title="[[+menutitle]]" itemprop="item" href="[[+link]]"><span itemprop="name">[[+menutitle]]</span><meta itemprop="position" content="[[+idx]]"></a></li>`
        &tplMax=``
    ]]
    

    Где то есть ошибка(

    написал в Общие вопросы Читать далее
  • prokesha

    Участник @prokesha написал в Вопрос по Catalogfill импорт XML:

    усок xml
    <P type="box_units">
    <N>шт/кор</N>
    <V>8</V>
    </P>
    </Properties>

    @Andchir привет! Ты мне ответишь на мой вопрос!? ...

    написал в Поддержка Читать далее
  • prokesha

    @Andchir Спасибо огромное!

    Кстати с catalogfill так и не разобрался как выгрузить этот элемент!

    Кусок xml

    <P type="box_units">
    <N>шт/кор</N>
    <V>8</V>
    </P>
    </Properties> 
    

    В конфиге я прописываю

     <Properties>
             <P type="box_units">
                 <V>tv30</V>
             </P>
     </Properties>  
    

    Он не видит почему то!

    БОлее подробный XML^

    <RealFeed date="2020-03-11 09:05">
    <Folder>
     <Uid>9b424c4</Uid>
     <UidParent>4e997c9</UidParent>
     <Code>9516</Code>
     <Name>Kiel Crema</Name>
     <Link>kiel-crema.html</Link>
    <Properties>
    <P type="country">
     <N>Страна</N>
     <V>Испания</V>
     </P>
    <P type="manufacturer">
     <N>Производитель</N>
     <V>Emigres</V>
     </P>
     </Properties>
    <Images>
     <I>ON.jpg</I>
     <I>Yrs.jpg</I>
     </Images>
     </Folder>
     </Folders>
    <Nomenclatures>
    <Nomenclature>
     <Uid>700cebf1</Uid>
     <UidParent>9b424c4b</UidParent>
     <Code>44500</Code>
     <VendorCode>Kiel Blanco, EMIGRES</VendorCode>
     <Name>Плитка Kiel Blanco 25х75 (1,45) Kiel Blanco, Emigres</Name>
     <Link>kiel-45.html</Link>
     <Price>120.0000</Price>
     <PriceTrade>110.0000</PriceTrade>
     <Quantity>135.9362</Quantity>
     <Unit>м2</Unit>
     <PackSize>0.1813</PackSize>
     <PackUnit>шт</PackUnit>
     <PackSize2>1.4500</PackSize2>
     <PackUnit2>кор</PackUnit2>
    <Properties>
    <P type="use">
     <N>Область применения</N>
     <V>Ванна</V>
     <V>Коридор</V>
     <V>Кухня</V>
     <V>Туалет</V>
     </P>
    <P type="country">
     <N>Страна</N>
     <V>Испания</V>
     </P>
    <P type="manufacturer">
     <N>Производитель</N>
     <V>Emigres</V>
     </P>
    <P type="collection">
     <N>Коллекция</N>
     <V>Kiel Blanco</V>
     </P>
    <P type="purpose">
     <N>Назначение</N>
     <V>настенная</V>
     </P>
    <P type="basis">
     <N>Основа</N>
     <V>красная глина</V>
     </P>
    <P type="surface">
     <N>Поверхность</N>
     <V>матовая</V>
     </P>
    <P type="color">
     <N>Цвет</N>
     <V>Белый</V>
     </P>
    <P type="size_sm">
     <N>Размер, см</N>
     <V>25x75</V>
     </P>
    <P type="thickness_mm">
     <N>Толщина, мм</N>
     <V>10</V>
     </P>
    <P type="box_units">
     <N>шт/кор</N>
     <V>8</V>
     </P>
     </Properties>
    <Images>
     <I>75.jpg</I>
     </Images>
     </Nomenclature>
     </Nomenclatures>
     </RealFeed>
    

    Конфиг такой

    //путь (xpath) в XML структуре до товаров
    $cf_config['imp_xml_itemsparent_path'] = '/RealKeramikaFeed/Nomenclatures';  //'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = <<<EOF
    
    <RealKeramikaFeed>
    <Nomenclatures>
             <name> pagetitle </name>
             <name> longtitle </name>
             <description> description </description>
             <Price>tv3</Price>
             <PackSize>tv10</PackSize>
             <PackSize2>tv29</PackSize2>
             <Code>tv33</Code>
             <V>tv30</V>
             <Images>tv1</Images>
     <Properties>
             <P type="box_units">
                 <V>tv30</V>
             </P>
     </Properties>  
    </Nomenclatures>
    </RealKeramikaFeed>
    
    EOF;
    

    написал в Поддержка Читать далее
  • prokesha

    Добрый день! Подскажите пожалуйста, меня интересует на сделать "Плитку тегов" задать допустим основных 4-5 тегов и свернуто, 10 как на картинке -
    Ссылка на сайт https://sumkigreta.ru/ryukzaki?page=3

    Прикрепил картинку для примера или ее можно вывести с помощью фильтров ?

    0_1591372786407_fe04c26f-3715-4b0a-9394-b77f3c5ff02f-image.png

    написал в Поддержка Читать далее
  • prokesha

    @Andchir Добрый день!

    Подскажите как правильнее!? Мне надо целые числа в цене, без запятой!?

    т.е. цена 2500,6 рублей, а надо 2501 допустим! А то турбо страницы ошибки выдают в яндексе цена с запятой!

    Как можно это сделать!?

     }
        
            if(isset($output_arr['tv']['3'])){
            $output_arr['tv']['3'] = floatval($output_arr['tv']['3']) * 1.60;
        
                
            }
        return $output_arr;
    
    Поставить round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] ) : float
    

    И так же к TV можно использовать!?

    написал в Поддержка Читать далее