我有一个简单的内容类型,每个内容类型都有一个“父”字段。该父字段由每个其他相关内容类型中的实体引用显示。如果存在父内容类型,则可以将这些其他内容类型与其关联。
使用视图,我的页面显示了“注释”的所有结果。 Notes具有与之关联的父级,在创建新笔记时必须选择该父级。所以每个音符都有一个父母。
我一直试图通过URL显示某个父母的所有笔记(我有pathauto和alias'设置):
committees/parent/notes
使用上下文过滤器和实体引用(父)我试图根据父上下文显示这些注释。我有关系:实体参考:父和在上下文过滤器(从field_parent引用的内容实体)内容:父。当我在自动预览区域中预览时,没有任何显示。例如,父名称是“fire”,我在预览上下文过滤器中输入它并且没有显示任何内容。
我设置如下:
当过滤器值不在URL中时:
已选中提供默认值
键入:来自URL的原始值(URL是委员会/父/备注)
路径组件:2(父)
已选中 - 使用路径别名
当过滤值IS在URL或默认提供时:
已选中 - 指定验证标准
已选择 - 验证程序:PHP代码
PHP验证码:**
$handler->argument = str_replace("-"," ",$argument);
return true;
然而使用Contextual过滤器(从field_parent引用的内容实体)内容:Nid然后放入父节点id(在本例中为fire),我能够看到某个父节点的“fire”注释id(与fire只是nid相同)。这正是我想要的。
我在这里缺少什么,以便在URL中引用父级并显示基于该父级的注释?为什么NID工作而不是URL中的PARENT?
答案 0 :(得分:0)
引用drupal 7时使用nid作为参考。在您的情况下,您应该在URL中使用nid或从父别名中找到nid。 对于后者,您可以使用drupal_get_normal_path()函数返回节点/ nid路径,然后在您的php过滤器中提取nid,如
$normalpath = drupal_get_normal_path($alias)
$parts=explode('/', $normalpath );
$nid=$parts[1];
答案 1 :(得分:0)
尝试使用此代码
当URL中的过滤值为IS或默认提供时:
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}
检查this!