Перенесення даних із сайту на сайт (Drupal), БлогСтікер

Навіщо це потрібно?

Виділимо 2 основні випадки, коли це необхідно:

Тут і виникають питання, які потрібно вирішувати.

Чому не скопіювати таблиці чи всю БД?

Модулі для перенесення вмісту?

Нарешті, ми дійшли до найцікавішого – модулів Drupal, які здійснюють перенесення контенту (я перерахую лише основні, найвідоміші):

  • Node export(як зрозуміло з назви) експортує nod-и, простий у використанні.
  • Taxonomy export, відповідно, переносить словники та терміни таксономії. Так само простий і виконує своє завдання чудово.
  • модуліNode import, Menu import, User importя об'єднані в одну групу, тому що вони здійснюють лише імпорт, і в основному використовуються для перенесення матеріалів з інших систем. Експорт формувати потрібно вручну.
  • самий багатофункціональний модуль -Deployment, а точніше зв'язкаDeployment + Services. На ньому зупинимося докладніше.

Далі обговоримо кожен із пунктів окремо.

Node export

Як вже написано вище, експортує nod-и, простий у використанні. Вміє експортувати nod-и як по одній штуці, так і одразу. Віддає результат у текстовому полі або як файл (це налаштовується). Також можна налаштувати поля, які будуть очищатися під час експорту, причому для кожного вмісту типу.

Імпортувати можна також, вставивши текст імпорту в текстове поле або завантаживши файл.

Переваги :

  • Розуміє CCK поля (стандартні, Imagefield, Upload).
  • Експортує вкладення, картинки. Причому за замовчуванням експортує все в один файл: немає окремо картинок, окремого вмістуnod-и. Це дуже радує.
  • Можливість роботи через Drush. Підтримка Drush зазвичай дуже прискорює роботу.

Недоліки :

Висновок: сайт-одержувач має бути ідентичним сайту-відправнику.

Taxonomy export

Модуль чудово справляється зі своїм завданням. Може переносити як визначення словників, так і словники з термінами, зберігаючи ієрархію та відповідність «контент-тайп - словник», якщо, звичайно, такий контент-тайп на сайті-одержувачі існує.

Так само, як Node export, вміє віддавати дані як у браузер у текстове поле, так і у вигляді файлу. Вміє оновлювати існуючі словники та терміни. Одна головна умова – ідентифікатори словників та термінів повинні співпадати на сайті-відправнику та одержувачі.

Нестача одна. Немає сенсу використовувати модуль разом з Node export. Якщо ви хочете зберегти залежності між nod-ами і термінами на сайті-одержувачі, то у вас нічого не вийде, тому що модуль створює записи з новими ідентифікаторами відправнику). Усі зв'язки губляться.

Node import, Menu import, User import

Скажу лише пару слів. Ці модулі здійснюють імпорт із CSV-файлів, які необхідно перед цим сформувати. Ці модулі не експортують, оскільки вони використовуються в основному для перенесення матеріалів з інших систем на Drupal.

Deployment + Services

Тепер ми підійшли до головного модуля, якому я приділю найбільшу увагу. Основний принцип роботи модуля (рис. 2) у тому, що, так би мовити, він займається імпортом даних на сайті-одержувачі. Точніше відправляє потрібні команди, на які реагує модуль Services на сайті-одержувачі. Все, що потрібно зробити, це вибрати елементи для відправки та запуститиdeployment.

Склад модуля Deployment :

  • Deploy book pages
  • Deploy Comments
  • Deploy Content Type.
  • Deploy Dates
  • Deploy Files
  • Deploy Nodereferences
  • Deploy System Settings
  • Deploy Userreferences
  • Deploy Views
  • Node Deployment
  • Taxonomy Deployment
  • User Deployment

Позитивні якості :

Недоліки :

  • Працює тільки з Services 6.x-2.x. Третю версію Services не підтримує та не збирається.
  • Не підтримує Filefield/Imagefield Всі вкладення та зображення втрачаються.
  • Конфлікт з модулем Upload Конфлікт, який полягає він у тому, що якщо на сайті-одержувачі включений модуль Upload, то nod-и переноситися не будуть, без жодних помилок та попереджень. У лозі деплойменту буде зазначено, що nod-а вдало відправлена, а насправді її не буде. Відбувається це через те, що модуль Upload якимось чином змінює форму створення nod-и, після чого деплоймент коректно працювати з нею більше не зможе.

Deployment plans

Наприклад, можна створити деплоймент план «Налаштування» та додати туди налаштування потрібних нам модулів. Після цього надіслати всі налаштування за один раз. На рис. 3 ми додаємо в деплоймент план 2 ноди. Модуль сам розпізнає зв'язки та, відповідно, додає їх автоматично.