Перенос на Друпал с самописного движка. Использование php-скрипта

Главные вкладки

Аватар пользователя tlito tlito 20 декабря 2013 в 13:14

Здравствуйте! Нужно перенести на Друпал 7, так как сейчас плохо индексируется и нужны возможности друпал.
Самописный движок: рубрики, мета-теги, статьи.
Базовая установка Друпал: без редиректов, таксономия - Категории.
Интересует вопрос: в какие таблицы и что нужно записывать, чтобы перенести контент на друпал.
Только: тексты статей и категории, без мета-тегов пока.

Комментарии

Аватар пользователя Niklan Niklan 20 декабря 2013 в 13:19

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

Писать сразу напрямую в базу не лучший вариант.

Аватар пользователя tlito tlito 20 декабря 2013 в 14:07

Спасибо!
API я нашёл php-скрипт создания нод: http://habrahabr.ru/post/119224/

---Листинг import.php - Добавление статей на Друпал 7---
<?php
require_once 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$node = new stdClass();
$node->title = "Заголовок новости";
$node->body = "HTML-код новости";
$node->teaser = $node->body;
$node->type = "news";
$node->created = time(); // дата создания
$node->changed = $node->created; // дата обновления
$node->status = 1; // нода опубликована
$node->format = 2; // используется фильтр 2-full, 1 - Filtered HTML
$node->comment = 2; // комментарии разрешены
$node->uid = 1; // ноду добавил "Гость", можно поставить uid=1, тогда ноду добавит админ сайта
$node->language = 'ru'; // нода на русском языке
node_save($node);
$new_id = $node->nid;
?>
-------------------------

Теперь хочу узнать как в этот код вставить Таксономию - Рубрики (системное имя categories).
И мета-теги?

Аватар пользователя tlito tlito 20 декабря 2013 в 15:25

приведённый выше скрипт НЕ РАБОТАЕТ!

Вот этот скрипт создаёт запись, но у меня создано поле Рубрика для Статей, поэтому есть разделение содержимого нод на поля field.
Из-за этого содержимое не создаётся. Создается только название ноды.

Листинг полурабочего php-скрипта
<?php
define('DRUPAL_ROOT', '/var/www/clients/client0/web12/web/');
include_once('/var/www/clients/client0/web12/web/includes/bootstrap.inc');
include_once('/var/www/clients/client0/web12/web/includes/common.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$n=1;
$t = 1256971732 + (60*60*24 * $n) ; //'1256971732' - 10/31/2009 - 09:48
$new_node = new StdClass();
$new_node->type = 'article';
$new_node->title = 'Новый заголовок2';
$new_node->status = 1;
$new_node->promote = 1;
$new_node->comment = 2;
$new_node->sticky = 0;
$new_node->created = $t;
$new_node->changed = $t;
$new_node->body['ru'][0]['value'] = 'Здесь содержимое'; //не работает
$new_node->body['ru'][0]['format'] = 'full_html';
$new_node->uid = 1;
$new_node->language = 'ru';
node_save($new_node);
// узнаем какой ID присвоился созданной ноде
echo $new_node->nid;

echo "еще одна запись импортирована";
?>

Скажите, как добавить в таблицу
field_revision_body содержимое, а в
field_revision_field_category категории ноды, и
field_revision_field_tags теги ?

Сейчас записи создаются без содержимого и рубрик. Я не умею добавлять к ноде поля.

Аватар пользователя tlito tlito 20 декабря 2013 в 16:06

Спасибо! Тут http://druit.ru/blogs/tnt/379 действительно легко разобраться.
После нескольких вариантов тыкания не в ту сторону написал корректный код так:

---Листинг рабочего import.php---

<?php<?
define('DRUPAL_ROOT', '/var/www/clients/client0/web12/web/');
include_once('/var/www/clients/client0/web12/web/includes/bootstrap.inc');
include_once('/var/www/clients/client0/web12/web/includes/common.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$n=6;
$t = 1256971732 + (60*60*24 * $n)  ; //'1256971732' -  10/31/2009 - 09:48
$new_node = new StdClass();
$new_node->type = 'article';
$new_node->language = LANGUAGE_NONE;
$new_node->body[LANGUAGE_NONE][0]['format'] = 'full_html';
$new_node->status = 1;
$new_node->promote = 1;
$new_node->comment = 2;
$new_node->sticky = 0;
$new_node->created = $t;
$new_node->changed = $t;
$new_node->title = 'Новый заголовок11';
$new_node->body[LANGUAGE_NONE][0]['value'] = "текст мой текст";
$new_node->field_tags[LANGUAGE_NONE][0]['tid'] = 7; // теги [0] первый тег [1] второй и т.д.
$new_node->field_tags[LANGUAGE_NONE][1]['tid'] = 8;
$new_node->field_category[LANGUAGE_NONE][0]['tid'] = 4; //категория
$new_node->uid = 1;
node_save($new_node);
// узнаем какой ID присвоился созданной ноде
echo $new_node->nid;

echo "еще одна запись импортирована";
?>

Код создаёт записи и публикует их на главной, указывая для записи Название, Категорию, Теги, Автора, Формат текста и другие параметры.
Работает нормально.
Однако, как теперь добавить в этот php-скрипт мета-теги?
Я посмотрел таблицу metatag там
entity_type
entity_id
data - формат blob
language
Как добавить мета-теги?

Аватар пользователя 6RUN0 6RUN0 22 декабря 2013 в 8:59

/**
* Save an entity's tags.
*
* @param $entity_type
* The entity type to load
* @param $entity_id
* The entity's ID
* @param $metatags
* All of the tag information
* @param $language
* The language of the translation set
*/
function metatag_metatags_save($entity_type, $entity_id, $metatags, $language)

Аватар пользователя tlito tlito 22 декабря 2013 в 12:54

Спасибо! Вопрос как использовать эту функцию
metatag_metatags_save($entity_type, $entity_id, $metatags, $language)
Первые два параметра: можно представить что это числа.
Но что в переменной $metatags ?

Не смог найти нигде как использовать эту функцию. Может через Metatag UI ?
Ничего найти не могу.