Вход • Регистрация

Изменение вложенности категорий товаров при импорте из 1С

  • 13 октября 2015 г.
  • Добрый день!
    Подскажите, можно ли видоизменить импорт товаров и категорий и 1С?
    При выгрузке товаров из 1С у нас формируется такая структура категорий:
    01 Основная категория товаров
    --- Категория 1
    ------ Категория 1.1
    ------ Категория 1.2
    ...
    --- Категория 2
    ------ Категория 2.1
    ....
    --- Категория 3
    02 Дополнительный ассортимент
    --- Категория 4
    ------ Категория 4.1
    и т.д.

    Соответственно после обмена с 1С у нас создается точно такая же структура категорий. Это было бы неплохо, но у нас автоматически генерируются ЧПУ в соответствии со структурой. Конечно можно ручками ЧПУ править, но товаров и категорий большое количество. Можно ли как-то исключить из импорта категории

    01 Основная категория товаров
    02 Дополнительный ассортимент

    а остальные категории создавать в корне каталога товаров и соответственно генерировать нормальное ЧПУ?
    У нас должно получиться вот такое дерево категорий

    Категория 1
    --- Категория 1.1
    --- Категория 1.2
    ...
    Категория 2
    --- Категория 2.1
    ....
    Категория 3
    Категория 4
    --- Категория 4.1
  • 13 октября 2015 г. , редакция: 13 октября 2015 г.
  • Единственный быстрый способ - это загрузить товар без категорий
    а потом создать категории и распихать его по категориям (это можно делать групповой обработкой - внизу списка товаров в Админке)
  • 13 октября 2015 г.
  • modules/shop/shop.1c.php 694 строка
    Код
    $this->import_categories($xml->Классификатор, $site_id);

    заменить на
    Код
    foreach($xml->Классификатор->Группы as $group)
    $this->import_categories($group, $site_id);

    Написал на скорую руку, отпишитесь заработало или нет.
    • 13 октября 2015 г. , редакция: 13 октября 2015 г.
    • Это, что бы после повторной выгрузки не привязывались категории из xml, я правильно понял?
    • 13 октября 2015 г. , редакция: 13 октября 2015 г.
    • Вообще пусто, ни одной категории не создается.
      Может тут что-то изменить нужно?
      Код

      private function import_categories($xml, $site_id, $parent_id = 0, $parents = array())
      {
      if(! isset($xml->Группы->Группа))
      return;


      Если сделать так
      Код

      private function import_categories($xml, $site_id, $parent_id = 0, $parents = array())
      {
      // if(! isset($xml->Группы->Группа))
      // return;

      if($parent_id)
      {
      $parents[] = $parent_id;
      }

      //foreach ($xml->Группы->Группа as $xml_group)
      foreach ($xml->Группа as $xml_group)


      То импортируется только корневые категории.

      Может быть нужно составить условие? У категорий в выгрузке из 1С есть например ИД. Может быть нужно исключить эти две категории по ИД?
  • 14 октября 2015 г.
  • В общем с помощью Андрея (koda) решил

    Файл modules/shop/shop.1c.php, строка 694, меняем:
    Код

    $this->import_categories($xml->Классификатор, $site_id);

    на
    Код

    foreach($xml->Классификатор->Группы->Группа as $group)
    $this->import_categories($group, $site_id);


    и проверяем. Таким образом, исключаем при импорте ненужные категории верхнего уровня, присутствующие в выгрузке из 1С и портящие нам ЧПУ.

    Андрей (koda) спасибо!
  • 16 октября 2015 г.
  • И все не так просто как хотелось бы!
    Ребят, прошу помощи!

    При таком варианте категории первого уровня имеют ЧПУ такой какой нужно - тут все нормально, а вот для вложенных категорий (2-го и т.д. уровня) и, соответственно товары, URL-лы генерируются не относительно своего родителя, а от самой первой категории, причем все абсолютно.

    Категория 1 -- /products/kategoriya-1/
    -- Категория 1.1 - /products/kategoriya-1/kategoriya-1-1/
    Категория 2 - /products/kategoriya-2/
    --- Категория 2.1 - /products/kategoriya-1/kategoriya-2-1/ - здесь url относительно Категории 1 ???
    ------ Товар 1 - /products/kategoriya-1/kategoriya-2-1/tovar-1/ - здесь тоже от Категории 1 ???
    И т.д.
  • 16 октября 2015 г.
  • А что вы ожидали от сайта - он Вам всю СЕМАНТИКУ сделает? может и просканирует кал-во ключивиков у конкурентов и текст в нужное кол-во слов сгенерирует после анализа товара в категории?
    1 - В СЕО компанию....
    2 - Сами ручками....
  • 17 октября 2015 г.
  • Dmitry (afonnikov10), что-то я не понял к чему Вы это? Читайте внимательнее! Причем тут SEO, семантика. Речь идет про импорт данных из 1С в Diafan.
    • 17 октября 2015 г.
    • К тому что замарачиватся не стоит - лучше руками потом прописать заголовки категорий что позволит конкурировать в ТОПАХ поисковиков...
  • 17 октября 2015 г. , редакция: 17 октября 2015 г.
  • *ля меня SEO сейчас не волнует!!! То что заголовки и мета-теги нужно прописывать руками я это и без вас знаю.
    • 17 октября 2015 г.
    • Успехов!
      Я ваапче советовал бы убрать из ЧПУ товара приписываемое ЧПУ категории...

  • 29 февраля 2016 г.
  • Здравствуйте, у меня схожая ситуация - нужно изменить стандартный способ привязки товар и категорий при импорте. Структура каталогов в 1с полностью соответствует иерархии категорий на сайте, меня все устраивает, кроме одного. Если товар находится в дочерней категории на сайте, то в материнской не доступны к отбору характеристики. Например на сайте, так как и в 1с:
    -Телефоны-
    -Sony- (категория, которая в 1с создана для более удобной работы, иначе слишком длинный список по моделям)
    -Nokia- (категория, которая в 1с создана для более удобной работы, иначе слишком длинный список по моделям)
    Внутри Sony находится товар у которого есть характеристика, например "память" со своими значениями.
    При такой конструкции на сайте находясь в категории _Телефоны, параметры Память не доступны к выбору, - нужно войти в подкатегории с товаром.
    Я пробовал на товар ставить дополнительную категорию, что бы модель телефона была и в SONY и в ТЕЛЕФОНЫ. Тогда все в порядке до очередной синхронизации с 1С. После нее дополнительные категории с товара слетают. Мечтаю найти место в файле modules/shop/shop.1c.php где можно прекратить привязывать товар к категориям. Пусть категории выкладываются сами по себе, как в 1с, а товар сам по себе. Рассовать его на сайте в нужные категории не сложно.
    Возможно, что в таком случае, товар после синхронизации вновь вывалиться вне категорий. Возможно будут создаваться повторы вне категорий. Мне есть с чем поэкспериментировать))

    Прошу Помочь и подсказать, как корректно попросить код не связывать товар и категории.
    А можем мне у более правильный путь укажите для решения этой задачи. Спасибо


    • 29 февраля 2016 г.
    • Может лучше править форму вывода поиска по характеристикам, что бы они считывали их и из дочерних категорий. Хотя тогда самая верхняя категория просто распухнет.
    • 29 февраля 2016 г.
    • Наверное нашел место, где можно отключить условие отказа от регистрации категории для товара. Это для того, что бы на сайте можно было назначить доп категорию а при синхронизации все бы не сбрасывалось. Тогда можно спокойно назначить товару вручную вышестоящую категорию, в котрой и станут видны все характеристики для отбора. Тогда можно текущую категорию сделать неактивной. Тогда пользователю не будут вижны все подкатегории и он сможет видеть весть товар в обной категории, хотя в 1с все лежит в подпапках.
      Делал синхронизацию, - дополнительные категории у товара не сбросились. Потестирую еще, напишу.
      А код, который удалил примерно 910 строка (не точно, я раньше правил код и строки могли сдвинуться)

      // категория
      if(isset($xml_product->Группы->Ид))
      {
      $cat_id = $_SESSION["1c_cats"][strval($xml_product->Группы->Ид)];
      }
      //Для разрешение допхарактеристик удалил следущее условие
      /*else
      {
      $cat_id = 0;
      } */
      • 02 марта 2016 г.
      • Чушь это все. Это место вообще про другое. В коде ничего менять не нужно а нужно делать так:
        Если в 1С товар Лыжи Salomon лежит в папке Зима, и в 1С вы делаете подпапку Salomon и перетаскиваете туда товар, То на сайте товар тоже перетащится в новую категорию Salomon. При этом в Администрировании в каталоге у товара светится только 1 категория - Salomon , а на сайте находясь в разделе Зима не видны к выбору параметры товра из подпапки Salomon,
        Если раскрыть в администрировании карточку товара, то в ней отмечена оснавная категория = Зима и отмечена Дополнительная категория Salomon (но почему то было не активно). Ничего не меняя просто сохраняя выходим и у товара в списке уже светится две категории - Зима, Salomon. В разделе зима на сайте видны параметри товара Лыжи Salomon. Так как из 1С нужно каждый раз делать полную выгрузку, а не изменений (иначе слетают все характеристики у несинхронизируемового товара, никто мне так и не подсказал, как вообще на постоянку всем характеристикам присвоить привязку ко всем категориям, то есть общие, и что бы не сбрасывалось при синхронизации)), то категория Salomon (основная для товара в 1с и дополнительная для товара на сайте) вновь слетает. Нужно опять открыть карточку товара и пересохранить.

        Что бы избежать этого нужно на сайте поменять местами основную и дополнительную категории и привести в соответствие с 1С. Тогда товар при синхронизации прилетает в категорию Salomon? а его дополнительная категория - Зима, не сбивается. Если товар изначально в 1с создать в папке и не перемещать его никуда, то такой проблемы не возникает, на сайте можно назначать любое количество доп. категорий.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум