我有一个名为Author的内容类型,在另外两种内容类型中称为Novel和Book via Node Reference Module。因此我们可以将Book实体添加到Book和Novel内容类型中。 Novel和Book都包含另一个名为Release Date的字段。 现在我想显示一个块,它将根据用户访问相应作者页面时的发布日期按时间顺序显示书名和小说名称。
实施例。假设A是BookA(Release Yr-2006),NovelB(Release Yr-2004),BookC(Release Year-2009)的作者。当用户访问作者A页面时,他将会看到一个块,它将按照时间顺序显示书籍/相册,如下所示: - NovelB - BookA - BookC
请建议如何在Drupal 7中实现。
答案 0 :(得分:0)
您想要显示以下字段title
(我假设图书名称是节点标题)
对于排序,您可以在视图中使用排序选项,这是非常自我解释。选择发布日期字段的名称。
对于作者和书籍之间的连接,您必须使用上下文过滤器(高级)。
添加您的图书/小说中的author-reference-field
(您用来引用作者的字段)。然后选择使用默认值(第二个选项)并选择content id from url
。现在,您的块将找到引用具有当前page-id的页面的所有节点。由于我们选择显示标题字段,您应该看到一个列表。
请注意,实时预览在这里不起作用,因此您必须转到实际页面才能看到结果。
<强>更新强>: 当您为两种内容类型重复使用相同的字段时,此方法有效。如果您使用多个字段,则必须使用OR运算符来使上下文过滤器起作用。感谢d34dman,以下page就是这样做的。 虽然对于新的实现,我建议对所有内容类型的所有引用使用相同的字段(例如reference_to_author)。
答案 1 :(得分:0)
是啊..我可以通过添加自定义代码来解决这个问题。我使用了hook_views_query_alter方法,然后根据需要添加了join relationship和where子句。请参阅以下文章以获得更清晰的信息。 http://www.midwesternmac.com/blogs/jeff-geerling/filtersearch-multiple-fields
感谢您发布回复并保持希望。