以编程方式/通过API创建Drupal CCK内容

时间:2009-04-21 14:35:27

标签: drupal cck

我正在使用Drupal 6.x系统来创建练习/个人训练计划,并且正在使用带有练习和程序内容类型的CCK,其中Program包含一些标题字段和一系列节点参考练习它包括。这很好用,我可以手动创建工作正常的程序。我现在希望创建一个模块,它可以根据我开发的一些算法自动生成这些程序,过程如下:

  1. 将所有练习加载到数组
  2. 加载用户个人信息(先前输入)
  3. 建立最适合的练习
  4. 创建新的节目内容类型
  5. 保存程序
  6. 一个练习有许多相关的属性,虽然我可以直接在表中使用SQL来完成上述所有操作,但它会非常复杂并且感觉不对。我想在第1步中将练习加载为一个Exercise对象数组(node_load?),然后创建一个程序对象并保存。这种OO类型方法是否可行,或者我是否必须直接操纵数据?

4 个答案:

答案 0 :(得分:5)

解决此问题的最佳方法是编写自己的模块来执行此操作。

步骤1你可以对所有的excercies做node_load($ nid) 第2步你可以使用user_load($ uid) 第3步,您需要遍历用户对象并匹配相应的excercies。 步骤4/5我创建一个新的$ node = stdClass();对象并使用正确的数据填充属性然后执行node_save($ node);这将为它分配一个$ node-> id等。

如果您不确定训练计划节点中的属性,请执行print_r($ node);在你已经创建的那个上。

菲尔

答案 1 :(得分:1)

Drupal没有提供任何“级联”保存机制来一次性保存节点层次结构。你需要在代码中构建每个节点,并按照Phil Carter的描述明确地调用node_save()。

Node Export模块可以以编程方式生成用于创建节点(以CCK字段完成)的示例代码。

答案 2 :(得分:0)

有很多模块试图正确地进行导入。看看它们的比较http://groups.drupal.org/node/21338

如果您需要将资源导入节点的策略或示例,那么这些资源就是很好的资源。

答案 3 :(得分:0)

我认为甚至不需要“创建”这些程序。

为什么不显示符合您要求的练习列表,并与用户分享“特征”。

我通过使'特征'成为分类来实现这一目标。然后使用配置文件或分类标志附加到用户。然后显示一个列表(可能甚至是一开始的视图)和那些在练习中具有相同特征标记的列表。

这将是动态的和用户特定的,并且需要预先加载一堆程序。

一个想法。

相关问题