<rmcreative>

RSS

Использование 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

  1. №2335
    Евгений
    Евгений 20 февр. 2010 г., 0:26:40

    Может быть концовку лучше так сделать?

    // Сохраняем без валидации

    node_submit($node);

    $node->uid = 1;

    node_save($node);

  2. №2337
    Sam
    Sam 20 февр. 2010 г., 13:11:17

    Какие в этом плюсы?

  3. №2351
    Евгений
    Евгений 26 февр. 2010 г., 11:01:00

    "Подготовка" тизера.

    ПС: почему то не приходит e-mail уведомление об новых ответах в комментариях. Хотя я на них подписан.

  4. №2355
    Sam
    Sam 27 февр. 2010 г., 18:31:40

    Да, оповещалка поломана.

  5. №4132
    Вова
    Вова 18 марта 2011 г., 15:04:59

    у меня такое не получается :(

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.