5

我正在使用 Drupal 6.x 系统来创建锻炼/个人培训计划,并且正在使用 CCK 与锻炼和计划的内容类型,其中计划包含一些标题字段和对它所包含的练习的节点引用列表. 这很好用,我可以手动创建运行良好的程序。我现在希望创建一个模块,它可以根据我开发的一些算法自动生成这些程序,过程如下所示:

  1. 将所有练习加载到数组中
  2. 加载用户个人信息(之前输入)
  3. 建立最适合的练习
  4. 创建新的节目内容类型
  5. 保存程序

一个练习有许多相关的属性,虽然我可以使用 SQL 直接在表中完成上述所有操作,但它会非常复杂并且感觉不对。我想在第 1 步中将练习加载为一组练习对象(node_load?),然后创建一个程序对象并保存。这种 OO 类型的方法是否可行,还是我必须直接使用数据?

4

4 回答 4

5

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

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

如果您不确定训练程序节点中有哪些属性,请执行 print_r($node); 在您已经创建的一个上。

菲尔

于 2009-04-21T14:49:30.303 回答
1

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

节点导出模块可以生成用于以编程方式创建节点(包含 CCK 字段)的示例代码。

于 2009-04-21T15:04:04.047 回答
0

我认为甚至没有必要“创建”这些程序。

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

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

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

一个想法。

于 2009-04-23T06:46:45.253 回答
0

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

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

于 2009-04-21T18:27:23.230 回答