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

Тэги: ,

Комментарии

#1 Евгений 20.02.10, 00:26

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

// Сохраняем без валидации
node_submit($node);

$node->uid = 1;
node_save($node);

#2 Sam 20.02.10, 13:11

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

#3 Евгений 26.02.10, 11:01

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

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

#4 Sam 27.02.10, 18:31

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

Оставить комментарий




Подписаться на RSS

Интересное

Разделы

  1. (5)
  2. (11)
  3. (6)
  4. (9)
  5. (6)
  6. (6)
  7. (16)
  8. (60)
  9. (274)
  10. (52)
  11. (16)
  12. (12)
  13. (37)
  14. (6)
  15. (10)
  16. (14)
  17. (18)
  18. (16)
  19. (7)
  20. (8)
  21. (7)
  22. (7)
  23. (31)
  24. (76)
  25. (27)
  26. (68)
  27. (5)
  28. (203)
  29. (59)
  30. (6)
  31. (19)
  32. (73)
  33. (27)
  34. (70)
  35. (33)
  36. (10)
  37. (5)
  38. (6)
  39. (5)
  40. (341)
  41. (14)
  42. (11)
  43. (6)
  44. (13)
  45. (8)
  46. (18)
  47. (6)
  48. (15)
  49. (115)
  50. (18)
  51. (6)
  52. (9)
  53. (71)
  54. (16)
  55. (6)
  56. (25)
  57. (13)
  58. (5)
  59. (39)
  60. (7)
  61. (31)
  62. (7)
  63. (12)
  64. (11)
  65. (124)
  66. (34)
  67. (5)
  68. (18)
  69. (28)
  70. (9)
  71. (6)
  72. (8)
  73. (41)
  74. (10)
  75. (6)
  76. (12)
  77. (5)
  78. (9)
  79. (6)

Друзья