为节点创建视图

时间:2010-07-27 21:37:57

标签: drupal drupal-views

我在为我的网站中的节点创建视图时遇到了一些问题。

内容的路径为'content /%',其中%是节点的标题。 我试图做的是在Views2模块中创建一个页面视图,但无济于事。 当我尝试使用其中一个节点的名称进行预览时,不会显示任何内容,当我实时访问节点时,它会将文本呈现给屏幕而不进行任何格式化。

以下是我的视图中的一些设置...如果我应该提供任何额外信息,请告诉我们。

页面设置

路径:内容/%

参数

节点:标题

  • 标题:%1
  • 如果参数不存在则采取的操作:提供默认参数
  • 默认参数类型:来自URL的节点ID

修改

我将描述我期待看到的行为......

我在视图中有一个节点列表....显示没有任何问题 我想要做的是点击节点并转到该节点的页面,这基本上是我列表中单个项目的扩展视图。

我认为我能做的就是克隆我的列表视图,然后添加一个参数来将范围从列表修剪为单个项目,但这样做效果不太好。样式化单个节点的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

修改 根据您的编辑,您已经使用视图创建节点列表,现在您希望能够单击一个节点并进入节点页面。

如果您只想要默认节点输出,则不必执行任何其他操作。不要尝试使用View来覆盖默认节点渲染; Drupal默认打印出来。

如果您想要唯一地设置节点主题(除了移动字段并更改UI中的显示设置允许您这样做),您应该查看自定义模板文件和主题。资源来源:http://drupal.org/theme-guide

如果要更改所有节点的显示方式,可以更改默认的node.tpl.php文件,也可以复制该文件并将其重命名为node-name_of_custom_type.tpl.php,以便唯一地设置自定义内容类型的主题已创建,但我建议在进行这些更改之前阅读Drupal主题系统。

编辑结束


如果要为“视图页面”显示指定路径,则不应在任何现有路径(例如节点路径,如您所述)之后对其进行建模。应该是避免路径别名冲突的独特之处。例如:

my-path/%

现在,如果你只是想在你的节点中嵌入一个视图(并且你希望传递节点id作为参数),那么你就到了中途。根据您的描述,您的“参数”设置是正确的。但是,您不需要页面显示。

以下是几个选项:

  • 快速'n'脏:创建一个块显示(不需要路径)并将块粘贴在节点页面的某个区域中(我使用了{{1} })将“嵌入”你的节点
  • 功能强大,灵活:使用节点内的content_bottom函数(api docs here)(正文或CCK字段,只需确保使用“PHP过滤器”)输入格式)

如果您使用views_embed_view,您可以灵活地将视图结果粘贴到您喜欢的任何位置,甚至不需要创建视图页面或块显示,因为该功能只能使用“默认” “显示。


注意:如果您导出视图并将导出代码保存在pastebindrupalbin等网站上,则此处的人员可以导入视图并直接查看以获取帮助详细回答你的问题。

答案 1 :(得分:1)

好的,明白了。 :)

使用Node:Title作为参数非常棘手:使用默认设置,参数必须与标题完全匹配。所以,如果你想匹配“测试值”,你的路径需要看起来像内容/测试%20value(注意上限)。

这将为您提供所需的节点。你说你有默认参数设置为URL的节点ID;这真的不适用于Node:Title参数。它的作用是尝试找到一个数字节点ID并将其用作参数,它永远不会在Node:Title上验证,除非节点的标题恰好与节点的ID匹配。

如果您只想显示所有节点,如果没有title参数,请选择显示所有值作为参数不存在时要采取的操作。如果要在标题参数无效(如拼写错误或其他内容)时显示所有节点,请确保在验证程序字段组中设置显示所有值,以便在参数不具备时执行操作验证

由于节点标题的精确匹配限制,使用Node:Title作为参数通常不是一个好主意。相反,请考虑使用“content / NID”(其中NID是行节点的节点ID)作为原始视图中的链接然后,使用Node:ID参数,而不是视图中的Node:Title参数。这应该使它不易出错。