Модуль MIGRATE и другие средства импорта содержания в Drupal Григорий НАУМОВЕЦ Киев Украина.

Презентация:



Advertisements
Похожие презентации
Michael Jackson
Advertisements

Миграция данных с помощью Feeds для кликеров. Когда использовать Агрегирование данных Перенос данных с других платформ Перенос данных с Drupal 6 на Drupal.
1 Импорт прайс-листов в базу данных ПК «Мастер-Тур»
Типовые расчёты Растворы

Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Модуль переноса решений Как средство распространения партнерских решений Варфоломеев Антон Директор по производству DocsVision.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Список литературы (через сноски) 1. Открываем документ Word 2.
Docsvision 5 Система управления документами и бизнес-процессами Приложение «Управление документами» Docsvision 5 Система управления документами и бизнес-процессами.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
Школьная форма Презентация для родительского собрания.

Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Е-МАСТЕР ® Документооборот Программно-методический комплекс (Система управления организационной информацией) +7 (812)
Семинар-тренинг 5-8 октября 2014 года Примеры настройки целевых показателей, использование "1С:Монитор ERP" и аналитических отчетов Лебедев Сергей, фирма.
IT-холдинг 1-й Архитектор бизнеса Переход на 1С:Бухгалтерию 8 – это очень просто! Презентация.
Слайд 1 из хх Управление корпоративными финансами Подсистема бюджетирования.
Лабораторная работа 1 «Структура и влияние различных факторов на динамику ВВП РФ» Силантьев В.Б.11 Профессор кафедры ЭММ Филиала ВЗФЭИ в г. Уфе ноябрь.
1. Определить последовательность проезда перекрестка
Транксрипт:

Модуль MIGRATE и другие средства импорта содержания в Drupal Григорий НАУМОВЕЦ Киев Украина

2 План В чём задача и в чём проблема Средства для импорта содержания в Drupal из популярных CMS Универсальные средства: Migrate, Node import и другие –Хранение содержания в Drupal: обзор таблиц –Node import и типичные проблемы переноса данных –Migrate и вспомогательные модули –Новые возможности Перспективы Целевая аудитория: содержание должно быть понятно и начинающим

3 Создание сайта на основе существующего Сколько статей/нод нужно перенести? Если мало – может, быстрее всего будет скопировать их вручную? Импорт содержания: задача-минимум – перенести основное содержание (заголовки и тела статей/нод) Задача-максимум – полный перенос сайта, включая –Классификационные категории (таксономия) –Файлы, их URLы и связь со статьями/нодами –URLы статей/нод –Языки статей/нод, связь между разноязычными версиями –Пользователи, их пароли, профили, права доступа –Авторство статей/нод –Даты создания/модификации статей/нод –Показатели оценки статей/нод пользователями или менеджерами сайта –И наверняка что-нибудь ещё, что вы заранее не смогли предугадать

4 Переезд на Drupal с других CMS: готовые решения Home » Installation guide » Migrating to Drupal Предлагаются либо специальные модули для переезда с конкретной CMS на Drupal, либо наборы скриптов и инструкций по переносу баз данных и файлов Проверяйте, для каких версий исходной CMS и Друпала разработаны модули или скрипты: если с тех пор структуре баз данных, старые скрипты могут не сработать

5 Примеры модулей для переезда на Drupal с других CMS Joomla to Drupal Wordpress Import WP2Drupal PHP-Nuke to Drupal phpBB2Drupal vBulletin to Drupal И т.д. и т.п.

6 Сравнение различных модулей для импорта и экспорта Comparison of Content and User Import and Export Modules

7 Модуль Node import Импорт содержания из текстовых файлов в формате CSV (comma-separated values) или TSV (tab-separated values) CSV или ТSV можно экспортировать из Microsoft Excel, или из phpmyadmin Текст в файле должен быть в кодировке UTF-8

8 Модуль Node import Можно импортировать данные в поля нод стандартных типов (page, story, etc.) и нестандартных (CCK) В ходе импорта анализируется структура исходной CSV- таблицы и задаётся соответствие: какую колонку таблицы импортировать в какое поле ноды Исходные данные Field 1 Field 2 Field 3 Field 4 Field 5 Field 6 Node Title Body Timestamp CCK Field 1 CCK Field 2 Language

9 Node import: возможные проблемы Перенос классификационных категорий в таксономию: возможна разная структура записи articlenumbercategories 168,40,41, , ,93 В исходном материале категории для каждой статьи перечислены через запятую, в Друпале о каждой таксономической категории (tid) делается отдельная запись с указанием идентификаторов ноды (nid, vid) Для простоты показан случай, когда номера нод и таксономических терминов равны номерам статей и классифкационных категорий в исходном материале – но реально это может быть не так

10 Возможное решение таких проблем Создаётся временное («техническое») поле, куда импортируются данные, которые нужно будет преобразовать (например, список категорий через запятую) Потом пишется sql-скрипт (или php-код), который выполняет нужное преобразование: в данном случае, просматривает содержимое временного поля и для каждой найденной категории создаёт соответствующую запись в таблице term_node Заодно, при необходимости, коды категорий исходного материала меняются на идентификаторы таксономических категорий Друпала Когда импорт содержания закончен и всё проверено, временные поля можно удалить

11 Node import: ещё один пример возможных проблем Перенос многоязычного сайта: возможна разная схема записи данных о языке и стыковки разноязычных статей/нод articlenumberlanguage Пример: в исходном материале язык описывается цифровым кодом (1,2,…), разноязычные версии стыкуются по номеру статьи (articlenumber) nidlanguagetnid 1en1 2ru1 3en3 4ru3 В Друпале язык описывается буквенным кодом (en,ru,…), разноязычные версии стыкуются по tnid (номеру ноды-«оригинала»), при этом номера нод не равны номерам статей (nidarticlenumber)

12 Возможное решение Исходный номер статьи (articlenumber) импортируется во временное поле Пишется sql-скрипт (или php-код), который должен: –Преобразовать коды языков для поля language (1->en, 2->ru и т.д.) –Сформировать значения поля tnid таким образом, чтобы, допустим, для нод с language=en tnid=nid а для нод с language=ru tnid = номеру англоязычной ноды с таким же значением articlenumber. В конце временные поля удалить

13 А как вообще в Друпале хранится содержание? В каких таблицах базы данных хранится основное содержание ноды и прочие данные, которые с ней связаны?

14 Table: node id ноды id версии ноды тип ( page, story, etc.) язык заголовок id пользователя Связь разноязычных версий: id ноды-«оригинала» статус перевода Вопреки ожиданиям, в таблице node НЕТ ОСНОВНОГО СОДЕРЖАНИЯ НОДЫ (body) Оно хранится в таблице node_revisions

15 Table: node_revisions id ноды id версии ноды id пользователя тело анонс Формат интерпретации содержания: filtered html,full html, php, etc. Именно в этой таблице хранится основное содержание («тело») ноды заголовок

16 Дополнительные таблицы для нестандартных типов CCK и используемых в них полей Таблица, где хранятся значения дополнительных полей CCK для нод определённого типа (intlproj) привязка к ноде по id версии и ноды значения дополнительных полей Таблица, где хранятся значения дополнительного поля CCK (areafocus), используемого в нодах нескольких типов значение дополнительного поля привязка к ноде по id версии и ноды

17 Таблицы, в которых описана таксономия

18 Данные о файлах и их связи с нодами: таблицы upload и files id ноды id версии ноды id файла id пользователя

19 Данные об адресах (алиасах) нод: таблица url_alias Source – системный адрес node/1 Destination – адрес-псевдоним welcome id адреса язык, к которому привязан адрес

20 Связь таблиц, где хранится информация о ноде node Основные данные о ноде node_revisions Основное содержание ноды, версии content_type_cck1 Значения полей, включённых в CCK тип CCK1 content_field_field1 Значения дополнительного поля field1 url_alias URL ноды upload Ссылки на приложенные файлы files Подробнее о приложенных файлах users Данные о пользователе - авторе ноды term_node Таксономия ноды term_node term_data term_hierarchy vocabulary Подробнее о таксономии

21 Проблема импорта из множества связанных таблиц В Друпале содержание разбросано по множеству связанных таблиц Что, если в исходной CMS содержание тоже разбросано по разным таблицам? Прежде чем создавать CSV-файл и подсовывать его под node_import, придётся соединить нужные данные из разных таблиц в одной Т.е. нужна предварительная обработка исходного материала

22 Импорт содержания CMS – источник данных Drupal Выделить содержание определённого типа Манипуляция данными (например, объединение таблиц, перекодировка, замена значений) Экспорт таблицы данных Манипуляция данными Создать/определить тип CCK и соответствующие поля для импорта содержания Проанализировать импортируемую таблицу, задать соответствие полей Импорт таблицы данных Манипуляция данными Доработка напильником и др. инструментами PROFIT!

23 Модули для преобразования данных Import / Export API Transformations –This module transforms data. It doesn't care which data, and it doesn't care how. This module is complex, and strongly object-oriented. If you're afraid of classes and objects in PHP, run away now. –This module can do lots in principle, but little out of the box.

24 Модуль Migrate: зависимость от других модулей Table Wizard Schema Views Migrate Extras. (для импорта полей CCK и взаимодействия с некоторыми другими модулями) Advanced help - рекомендуется

25 Модули Table Wizard (TW) и Schema Модуль Schema: API для операций с таблицами в базе данных Table Wizard позволяет: –Просматривать, фильтровать и т.п. таблицы в базе данных средствами Views –Анализировать данные – показывать диапазон значений и т.п. –Устанавливать связи между таблицами и совмещать их данные –Импортировать данные из CSV-таблиц TW предоставляет API для работы других модулей с таблицами базы данных через Views

26 Последовательность действий при импорте через Migrate and-table-wizard site_drupal

27 Последовательность действий при импорте через Migrate Втянуть таблицу с данными в MySQL У таблицы д.б. единственный основной ключ (primary key); при необходимости - отредактировать Использовать Table Wizard (admin/content/tw) и пометить нужные таблицы Если данные хранятся в нескольких таблицах – построить связи (admin/content/tw/relationships) Проанализировать данные и построить таблицы соответствий (content sets) между исходными полями и полями, куда нужно импортировать данные (admin/content/migrate/destinations) Выбрать таблицу соответствий и запустить процесс миграции (admin/content/migrate/process)

28 Шаги импорта данных через Migrate Выбор таблицы в Table Wizard: таблица legacy_products Pictures from manual by Angie Byron data-imports-migrate-and-table-wizard

29 Шаги импорта данных через Migrate Таблица legacy_products выбрана показана информация о её содержании: количество записей - 4 Pictures from manual by Angie Byron

30 Шаги импорта данных через Migrate Анализ таблицы legacy_products поля можно комментировать, помечать как игнорируемые Pictures from manual by Angie Byron

31 Шаги импорта данных через Migrate Просмотр содержания таблицы legacy_products (без игнорируемых полей) Pictures from manual by Angie Byron

32 Шаги импорта данных через Migrate Разметка импорта полей из таблицы в ноду Pictures from manual by Angie Byron

33 Шаги импорта данных через Migrate Source fieldDefault valueDestination field 1Node: Authored by (uid) name Node: Title description Node: Body description Node: Teaser price CCK: Price value sku CCK: SKU Number value При этом задаются такие назначения для импорта:

34 Шаги импорта данных через Migrate Задание команды на импорт Pictures from manual by Angie Byron

35 Шаги импорта данных через Migrate Сообщение о результатах импорта: импортировано 4 записи Pictures from manual by Angie Byron

36 Шаги импорта данных через Migrate В списке нод появилось 4 новых ноды они пока не опубликованы – чтобы можно было проверить, всё ли с ними в порядке Pictures from manual by Angie Byron

37 Новое и полезное в Migrate (+TW): Работа с таблицами в базе данных Возможность объединения данных из нескольких таблиц Более удобный и наглядный интерфейс для анализа, фильтрации, просмотра, установки соответствий Возможность автоматического разбора значений, перечисленных через запятую Hooks для разработчиков дополнительных модулей: см. Migrate: Hooks Migrate API - new in migrate-1.0-beta4 and beyond.

38 Развитие Migrate Для Drupal 6 сделан Migrate 1.0 Migrate 2.0 разрабатывается для D7 – после чего планируется backport на D6. Migrate 2.0 не должно зависеть от модулей Views и Table Wizard

39 Спасибо за внимание! Контактная информация: –