我正在构建一个小系统,它将从API中提取产品,并在脚本运行时将每个产品作为节点放入drupal db中。我是Drupal的新手,所以我希望你能原谅我的愚蠢。下面是我到目前为止所做的一个非常简单的分解。
- 使用php simplexml通过API提取产品。
2。在php变量中存储产品名称、描述、url等。
-
现在我需要将它们作为节点添加到Drupal中。我得到了这个代码从web这正是我需要的(我认为)
$node = new stdClass(); $node->type = "page"; $node->title = "Title"; $node->language = LANGUAGE_NONE; $node->path = array('alias' => 'your node path'); // Setting a node path node_object_prepare($node); // Set some default values. $node->uid = 1;
任何帮助都将不胜感激。
问候,艾哈迈德。
ghomey说的方式确实有效,但是如果您不想通过创建模块然后转到页面来完成它,您可以使用drupal_bootstrap()
允许您将drupal包含到。php文件中。下面是一个代码示例:
define('DRUPAL_ROOT', '/path/to/drupal');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//add create node object here
node_save($node);
Drupal有一个模块系统,允许你添加自己的php代码。
一个模块至少需要两个文件:a .module
和a .info
文件
因此,要创建一个名为myimporter
的模块,您必须相对创建两个文件到Drupal根目录:
sites/all/modules/custom/myimporter/myimporter.module
sites/all/modules/custom/myimporter/myimporter.info
.module文件将包含php代码,.info文件将包含模块元信息。
关于info文件的更多细节可以在这里找到:http://drupal.org/node/1075072
创建模块后,必须通过导航到/admin/modules来启用它。
你的模块必须包含一个使用menu钩子的菜单声明:http://api.drupal.org/api/drupal/modules系统! system.api.php/功能/hook_menu/7
那么你的myimporter.module
文件可能看起来像这样:
<?php
function myimporter_menu() {
// Register myimporter/demo
$items['myimporter/demo'] = array(
'page callback' => 'myimporter_demo',
);
return $items;
}
function myimporter_demo() {
// add your node import code here
return "Hello world";
}
添加新的菜单钩子元素时,必须清除Drupal缓存。然后打开浏览器,导航到http://localhost/myimporter/demo