Перенос сайтов с любой CMS на Битрикс

Введение

Введение в перенос сайтов с любой CMS на Битрикс

Это нормально, когда в начале бизнеса люди делают интернет-магазин на бесплатных движках типа OpenCart, Joomla и тп, а потом переходят на платные движки типа Bitrix. При смене движка важно не только корректно перенести данные, но и сохранить SEO-характеристики сайта, а также потом проверить позиции сайта по основным запросам. В этой процедуре я интенсивно использую 1С, при чем не только в трансформации данных, но и в SEO-манипуляциях. Моя 1С может не только парсить сайты проверя при этом корректность технической SEO-оптимизации (www, без www, коды ответов, 301-редирект, 404-редирект, уникальность метатегов и H1), но и с помощью API вытаскивать из Яндекс-вебмастеа позиции по разным запросам.

Общие принципы

Все данные, которые переносятся из любой CMS в Битрикс можно условно поделить на следующие группы (в зависимости от роли в Битриксе):

  • Статические страницы
  • Содержиое инфоблоков, которое является торговым каталогом
  • Содержиое инфоблоков, которое не является торговым каталогом
  • Мультимедийные ресурсы

Процесс переноса делится условное на три стадии:

  • Выгрузка из источника
  • Преобразование данных
  • Загрузка в Битрикс

Загрузка в Битрикс может производится следующими способами:

  • Загрузка с помощью штатного механизма импорта данных - XML
  • Загрузка с помощью штатного механизма импорта данных - CSV
  • Загрузка с помощью 1С
  • Загрузка с помощью PHP-скриптов

Какой способ использовать - это зависит от задачи и начальных данных.

Oсобенности переноса

Особенностью штатного механизма XML-импорта данных является то, что структуру разделов нужно задавать в иерархическом виде, а не в линейном, как это хранится в SQL-базах. Для преобразования линейного представления групп в иерархический я использую промежуточное хранение групп в 1С-справочнике. То есть, сначала загружаю линейные данных в 1С-справочник, а потом с помощью рекурсивной функции получаю иерархическую структуру групп.

На изображении, которое ниже, представлена структура групп в линейном виде. Поле «category_id» - это уникальный код текущей группы. Поле «parent_id» - это код родительской группы.

Линейная структура групп

Вот так выглядит иерархическая структура групп в 1С-справочнике:

Иерархическая структура групп в 1С-справочнике

Вот так выглядит иерархическая структура групп в XML-файлике:

Иерархическая структура групп в XML-файлике

Вот так выглядят группы в административной панели Битрикса:

Группы в административной панели Битрикса

Инструменты

Инструменты для переноса сайтов с любой CMS на Битрикс

Для меня основным способом извлечения данных из любой CMS (за исключением без-SQL-льных) является json-файлики, выкаченные из PhpMySQL. Основным способом загрузки данных в Bitrix для меня является штатный XML-импорт. Мои основные инструменты и наработки связаны с преобразованием этих json-файликов в xml-файлики и тестированием механизмом XML-импорта. В официальной документации битрикса про XML-импорт написано следующее:

Курс «Администратор.Бизнес» → Импорт данных
Примечание. Механизм загрузки через XML – довольно сложный и используется для интеграции с существующими системами учета. В силу сложности темы, в Примере этот способ импорта рассматриваться не будет.

С одной стороры, официальная документация по поводу внутренних механизмов XML-импорта отстутствует, с другой стороны, этот механизм позволяет делать много того, что не может CSV-импорт. Кроме этого, в этом механизме есть функционал, который позволяет загружать большие объемы данных. Если загрузку делать своими PHP-скриптами, то там нужно будет предусматривать ограничения PHP-сервера на долгую работу скрипта.

Перенос изображений и файлов в Битрикс

В битриксе каждый элемент и каждый раздел инфоблока имеют штатную возможность привязать две картинки - детальная картинка и картинка анонса. Кроме этого туда можно еще добавить сколько угодно картинок в виде свойств типа "Файл". В подавляющем большинстве случаев в магазине-источнике у каждого товара, а иногда и у раздела имеется привязанная картинки и еще и не одна. К товару помимо картинок могут быть еще привязаны файлы. Например, к товару можно привязывать инструкции в pdf-формате. В своей практике я так же встречал случаи, когда к группам товаров привязываются xls-файлики, в котором находятся прайс-листы товаров, содержащихся в этих группах.

Перенос изображений и файлов в Битрикс

Читать далее ...

Перенос символьных кодов в Битрикс

Как известно в Битриксе основной уникальной меткой товара или раздела является его ID, который происходит из механизма работы SQL-сервера и имеет тип «Целое число». Его точным аналогом в 1С является GUID, примерным аналогом в 1С является код номенклатуры. Поисковые роботы устроены так, что им очень не нравится когда для идентификации товара используют ID. Этим роботам больше нравится, когда товар идентифицируют набором букв, которые как можно ближе напоминают обычное наименование товара. Этот набор букв иногда сокращенно называют ЧПУ (человеко-подобные урлы).

Перенос символьных кодов в Битрикс

Читать далее ...

Долгоиграюшие скрипты при переносе данных в Битрикс

В практике переноса данных часто встречается потребность запускать долгоиграющие php-скрипты. Например, удалить все разделы инфоблока, удалить все элементы инфоблока, заполнить внутренний код значениями идентификатора или значениями GUID, взятыми из 1С. У меня несколько раз были ситуации, когда падали сервера после запуска долгоиграющих скриптов. По моей точке зрения они падали потому-что хостеры что-то не так делали. Тех-поддержка хостера конечно же их перезапускала, но все равно это неприятная ситуация. В идеальном случае, если время скрипта превышает лимит, то сервер должен просто отдавать 504 код ответа, но не падать. Не все сервера падали, но некоторые падали. Поэтому, что бы не попадать в такие ситуации, я разбиваю один долгоиграющий скрипт на несколько коротко играющих и запускаю их по очереди с помощью 1С с разными параметрами. 1С тут выполняет роль крона. Крон хуже 1С по следующим причинами:

  • Настройки крона у всех хостеров разные и поэтому нужно каждый раз в них разбираться
  • С помощью крона я не могу запускать один и тот же скрипт с разными параметрами
Долгоиграюшие скрипты при переносе данных в Битрикс

Переход с OpenCart на Bitrix

В данном переносе встречаются следующие особенности:

  • Ссылка на картинку есть в двух местах
  • Цена есть в двух местах
  • Количество есть в двух местах

Нужно разобраться с этим.

JSON-файлики полученые из OpenCart

Кейсы

Заполнить бриф

В каждой области человеческой деятельности есть свои неписанные правила. В некоторых случаях (но далеко не во всех) для этого применяется понятие «Обычай делового оборота». Область веб-разработки не является исключением. Поэтому, если Вы хотите, что бы я Вам перенес данные или сайт в Ваш Битрикс, Вам нужно заполнить бриф.

Обратная связь


Warning: Use of undefined constant root_dir - assumed 'root_dir' (this will throw an Error in a future version of PHP) in /home/my-services/links-pro.ru/www/lib/site-transfer/index.html on line 226

Warning: include(root_dir/zzz/feedback-standard-form.php): failed to open stream: No such file or directory in /home/my-services/links-pro.ru/www/lib/site-transfer/index.html on line 226

Warning: include(): Failed opening 'root_dir/zzz/feedback-standard-form.php' for inclusion (include_path='.:/usr/share/php') in /home/my-services/links-pro.ru/www/lib/site-transfer/index.html on line 226