Иногда нужно добавить в сайт на drupal 7 кучу контента, естественно делать это в ручную дорого и не рационально..
Тем более что это можно автоматизировать…
Я опущу информацию откуда контент. Т.е. не важно база данных у вас или навал текстовых файлов со статьями. О том как их открыть я предлагаю вам подумать самим.
Мы же создадим скрипт, который поможет добавить материалы уже непосредственно в drupal.
Я собираюсь получать данные статьи через сеть посредством POST запроса.
Инклудим модули друпала:
define(‘DRUPAL_ROOT’, getcwd());
$_SERVER[‘REMOTE_ADDR’] = «localhost»; // если вы запускаете из консоли
require_once DRUPAL_ROOT . ‘/includes/bootstrap.inc’;
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Я проверяю получены ли данные из запроса POST :
if (!isset($_POST[‘text’]) || !isset($_POST[‘title’]))
exit(«error»);
Преобразовываю всё в нормальный текст html:
$bodytext = htmlspecialchars_decode($_POST[‘text’]);
$nodetitle = htmlspecialchars_decode($_POST[‘title’]);
Теперь навсю пользуемся возможностями друпал :
$node = new stdClass(); // новый объект ноды
$node->type = «article»; // тип материала
node_object_prepare($node); // заполняем стандартными параметрами
Заголовок и язык:
$node->title = $nodetitle;
$node->language = LANGUAGE_NONE; // указываем язык
Устанавливаем автора — админа:
$node->uid = 1; // UID автора ноды
Данные статьи:
$node->body[$node->language][0][‘value’] = $bodytext;
$node->body[$node->language][0][‘summary’] = text_summary($bodytext); // превью
$node->body[$node->language][0][‘format’] = ‘filtered_html’; // тип текста
Путь к ноде:
$path = $node->title;
$node->path = array(‘alias’ => $path);
Сохраняем:
if($node = node_submit($node)) { // сохраняем
node_save($node);
echo «Node with nid » . $node->nid . » saved!\n»;
}
Получившийся файл ложим в корневой каталог drupal.
Пользуемся.