Использование Drupal через bootstrap
25 января 2010
Drupal позволяет поработать со своим API из внешнего скрипта. Ну или почти внешнего.
Покажу на примере, как можно организовать импорт данных в Drupal.
Создаём файл import.php в корне Drupal (это важно!).
// Если хотим работать исключительно из консоли /*if(array_key_exists('REQUEST_METHOD', $_SERVER)){ echo 'Command line only. Sorry.'; exit(1); } else { // Для консоли обязательно указать хост Drupal. // Иначе ничего работать не будет. $_SERVER['HTTP_HOST'] = 'Хост вашего Drupal'; }*/ error_reporting(E_ALL); // При импорте часто бываем маловато стандартного времени set_time_limit(300); // Загружаем Drupal require 'includes/bootstrap.inc'; require 'modules/node/node.pages.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // Drupal загружен остался лишь импорт // Получаем список продуктов $products = get_products(); foreach($products as $product){ // Готовим данные $node = new stdClass(); node_object_prepare($node); // Будем сохранять в ноды с типом product $node->type = 'product'; // Владельцем будет пользователь с uid=1 $node->uid = 1; // Заголовок $node->title = $product['title']; // Тело $node->body = $product['description']; // Теги. Сюда можно записать массив tid $node->taxonomy[] = $product['taxonomy']; // CCK (с одним значением) $node->my_cck_field[0]['value'] = $product['my_cck_field']; // Сохраняем без валидации node_save($node); echo "Product saved to node {$node->nid}<br />"; }
Комментарии RSS по email OK
Может быть концовку лучше так сделать?
// Сохраняем без валидации
node_submit($node);
$node->uid = 1;
node_save($node);
Какие в этом плюсы?
"Подготовка" тизера.
ПС: почему то не приходит e-mail уведомление об новых ответах в комментариях. Хотя я на них подписан.
Да, оповещалка поломана.
у меня такое не получается :(