Добавляем node в drupal программно при помощи PHP скрипта

Иногда нужно добавить в сайт на 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.
Пользуемся.

 

Источник: malimar.ru

teamviewer-com
Не копируйте текст!