Перенос материалов из Joomla 1.5 + K2 в Drupal 6

Недавно устроился на подработку администратором сайта одной местной газеты. Сайт у нее уже был, и сразу сделать его таким, как я его вижу , не получилось. Сайт работает на CMS Joomla 1.5 и расположен на серверах SpaceWeb'а. За контент, как уже понятно из заголовка, отвечает сторонний компонет K2. ИМХО, Joomla вполне удобна для создания небольших сайтов-сателлитов фирм, ведущих свою деятельность вне интернета. Однако, в 21-м веке сайт для газеты — это уже не просто ее "визитка" в сети, и у меня сразу же зачесались руки превратить его в крупный информационный портал с новомодными социальными "штучками".

Однако, возможностей Joomla, даже с установленным K2(который нехило грузит сервер) для этого явно не хватает. Значит, надо переводить сайт на более гибкую и масштабируемую CMS. Поскольку идея K2 скопированна с CCK для Drupal, для портала я решил выбрать именно данную CMS. Но на существующем сайте газеты уже имеются тонны информации, и потерять ее просто недопустимо. Если бы не K2, то можно было бы воспользоваться конвертером Joomla to Drupal, но в данном случае всю "малину" обламывал злосчастный K2. Учитывая, что структура базы данных CMS меняется в зависимости от настроек пользователя, написать универсальный конвертер "все-в-одном", переносящий сразу все, довольно сложно и, на мой взгляд, не оправдывает целей. Так что я решил слить все таблицы двух CMS в одну базу и написать скрипт, который бы подключался к ним и переносил данные на прямую.

Итак, нам придется работать со следующими данными:

Информация о категориях K2 хранится в таблице `k2_categiries`. В друпале я для этого использовал модуль таксономии, создав необходимые словари и термины в админ-панели Drupal'а. При этом создаются записи в таблицах:

`term_data`  — данные терминов

`term_node` — привязка терминов к нодам

`vocabulary` — данные по словорям

Далее, хранение материаллов в Drupal организованно несколько сложнее K2. Для этого используются таблицы:

`node` — базовая информация о нодах. Стоит обратить внимание на следующие поля:

  • `type` — тип материалла Drupal. Берется из таблицы `node_type`.
  • `status` — параметры видимости ноды. 1 — опубликовано.
  • `comment` — праметры коментариев. 2 — разрешены чтение/запись.
  • `promote` — публиковать на главной. 0/1 — нет/да
  • `language` — язык статьи из таблицы `languages`

Непосредствено текст материалла содержит таблица `node_revisions`, разобраться в струтуре которой, на мой взгляд, не должно составить труда. Единственный момент: обратите внимание на отношения полей `nid` и `vid` таблиц `node` и `node_revisions`.

К моему счастью, на существующем сайте в K2 небыло созданно дополнительных полей, использовались только стандартные для него "изображение материала", "видео материала" и "галерея материала". Тут и думать нечего — в drupal'е я просто создал такие же поля при помощи CCK.

Перенос материалла этих полей несколько сложнее, и, к сожалению, я его пока не осуществил. Как только я это сделаю, обязательно отпишусь, а пока вот до чего я смог докопаться:

Если с тем, где в K2 хранится код видео, понятно из струтуры таблицы `k2_items`, то с изображением и галереей все несколько сложней. В поле `gallery` таблицы `k2_items` указанно лишь непонятное число. Так вот , это число — название папки с картинками галереи, которая лежит в ./media/k2/gallery/.

С изображением материала тоже не все так просто. Ни в одной таблице БД  K2 нет записей о нем. Я смог найти необходимую информацию только на официальном англоязычном сайте K2. Оказывается, картинки хранятсе все в той же папке ./media/k2/, а вот путь к ним формируется следующим образом: $file_name=md5("image".`k2_items.id`)."_L.jpg".

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *