2

我正在构建一个小型系统,该系统将从 API 中提取产品,并在脚本运行时将每个产品作为节点放入 drupal db。我是 Drupal 的新手,所以我希望你能原谅任何愚蠢。所以这里是我迄今为止所做的一个非常简单的分解。

  1. 使用 php simplexml 使用 API 提取产品。

2.在php变量中存储产品名称描述、url等。

  1. 此时我需要将它们作为节点添加到 Drupal。我从网上得到了这段代码,这正是我所需要的(我认为)

    $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; 
    

因此,只需将我的 PHP 变量放入上述每个变量中即可。但我被困在把所有这些和我的代码放在哪里?我的意思是我是在 drupal 根目录中创建新的 php 文件还是什么?要包含哪些文件。如何执行此操作。

任何帮助将不胜感激。

问候,艾哈迈尔。

4

2 回答 2

4

Ghommey 所说的方式确实有效,但是如果您不想通过创建一个模块然后转到一个页面来实现它,您可以使用它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);
于 2013-01-22T14:20:18.313 回答
3

Drupal 有一个模块系统,允许您添加自己的 php 代码。

一个模块至少需要两个文件:一个.module和一个.info文件。

因此,要创建一个名为的模块,myimporter您必须创建两个相对于 Drupal 根目录的文件:

sites/all/modules/custom/myimporter/myimporter.module
sites/all/modules/custom/myimporter/myimporter.info

.module 文件将包含您的 php 代码,.info 文件将包含模块元信息。

关于信息文件的更多细节可以在这里找到:http: //drupal.org/node/1075072

创建模块后,您必须通过导航到 /admin/modules 来启用它。

您的模块必须包含使用菜单挂钩的菜单声明: http ://api.drupal.org/api/drupal/modules!system!system.api.php/function/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

于 2013-01-22T14:04:21.317 回答