在Drupal中,如何在一个节点中包含另一个节点?
比方说,我有两种内容类型,建议和操作。一个提案会包含多个操作,但操作也应该可以单独查看。每个包含几个文本字段和链接。在Drupal中,如何在一个节点中包含另一个节点?
建议和动作都应该是节点吗?我会如何去做这件事?
在drupal中本质上没有父母/子女关系。您可以使用CCK的节点参考和一些创意视图来构建这些内容。
尝试使用视图块显示。您需要为视图创建一个块显示,该视图显示与相应提议节点相关的所有操作节点(或者您需要多少操作节点)(您需要将视图参数设置为如下所示:Nid - 提供默认参数 - 节点ID来自URL)。然后将此块附加到代表您的提案页面的页面。
有许多这样做的方法,与Drupal的大多数事情,但如果是我,我会做到这一点:
- 构建节点关系CCK
- 装入“孩子“,即相关与node_load()在模板文件
- 节点拉你想出来的新加载的节点的位,并打印出来的‘父’节点
编辑:是的,他们都应该是节点。
如果您使用此方法,那么一旦它被设置你将不得不进入你的建议和选择你想成为“载”哪些动作(即链接)。
然后打印出来,你会希望类似的一些代码来
<?php
$actions = $node->field_name_of_your_actions_link_field;
foreach($actions as $action){
$anAction = node_load($action[nid]);
$output .= $anAction->the_bit_you_need_to_get[0][content];
}
?>
当然变量名称会有所不同,但希望这将指向你在正确的方向
不是在模板文件中加载子项,使用hook_nodeapi并在加载父节点时加载子项的数据不会更好吗?将字段添加到父节点对象?然后,无论您使用父级,都可以使用子级数据。 – Graham 2010-12-17 14:34:42
你调查过模块视图?它非常强大,可以让你几乎显示任何东西。
如果你使用的观点,你会做一些与此类似:两个内容类型和分类词汇的行动配合,以提案(因此,把上的动作内容类型术语参考场)。
然后,您将创建一个页面视图,它将按内容类型提议进行过滤。您可以添加提案中的所有字段,然后对它们进行排序并执行您的CSS以让它们显示您的想法。
然后,你将有另一种观点认为,这一次的块,而这将列出你的操作,所以你会通过内容类型进行筛选。然后,您将添加一个上下文筛选器以获取已加载的节点的分类。一旦您在提案页面上显示此块,它应该显示其操作的链接。
我认为这基本上涵盖了它,这一点很难,而无需实际这样做,如果你碰到什么让我知道解释。
意见是伟大的。这有点吓人,但是一旦你掌握了它的使用方法很容易。我很抱歉,如果你已经知道这一点,我错过了你的要求。
那么我会拍摄的是整体建议将打印出行动描述文本。我想我会研究CCK /视图组合。 – samoz 2010-12-16 04:04:00
对nodereference的一个警告是,您只能在视图内向下钻取一层。如果您的孩子有需要在视野内找到的孩子,那么您必须为此写点东西。 – 2010-12-16 13:17:15