首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Drupal6和Views2将多种内容类型组合到单个搜索结果中

使用Drupal6和Views2将多种内容类型组合到单个搜索结果中
EN

Stack Overflow用户
提问于 2010-04-16 11:24:14
回答 2查看 2.1K关注 0票数 1

我需要为我的Drupal6站点创建一个有点高级的搜索功能。我有两个内容类型之间的一对多关系,需要搜索它们,尊重这种关系。

为了让事情更清楚..。

我有TypeX和TypeY两种内容类型。TypeY具有将其与TypeX的单个节点相关联的节点引用CCK字段。因此,TypeY的多个节点引用TypeX的同一个节点。

我想使用Views2为这些节点创建一个搜索页。我希望每个搜索结果都是TypeX的一个节点,以及引用它的TypeY的所有节点。我知道我可以只对单个结果进行主题化,然后使用视图将TypeY的节点添加到TypeX的单个节点中……但这并不能让用户真正搜索TypeY...它只会搜索TypeX,并且只显示TypeY的一些节点。

有没有办法让搜索考虑到这两种内容类型的节点中的内容,但将TypeY结果合并到TypeX的“父”节点中?

在数据库术语中,看起来我需要做一个连接,然后根据搜索条件进行过滤。但是我不知道如何在视图中做到这一点。

感谢您的帮助!

‘*编辑’*

为了确保这一点清楚,这里有一个我想要做的可视化示例……

代码语言:javascript
复制
_____________________________________________________________________________________
|Type X Node                           |Type Y Node                                  |
|                                      |                                             |
| Content in node of TypeX that gets   |Has a node reference that points to the node |
| searched by the view...              |of TypeX. This content gets searched too!    |
|                                      |_____________________________________________|
|                                      |Type Y Node                                  |
|                                      |                                             |
|                                      |Another TypeY node with a node reference to  |
|                                      |to the TypeX node. This gets searched too!   |
--------------------------------------------------------------------------------------

这将是来自搜索视图的单个结果。搜索将考虑所有三个节点中的内容:视图中的术语过滤器。所以如果我搜索"This get searched So!“,我会得到上面的结果。或者,如果我搜索"Content in node of TypeX",我会得到相同的搜索结果。

我知道我可以使用另一个视图搜索TypeX并在结果显示中加载TypeY节点,但它不会搜索TypeY节点中的内容。

任何想法..。缺少我自己的搜索功能(我现在不想做的事情)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-18 07:37:56

哇,就是哇。我终于为这个问题找到了一个优雅的解决方案。我不敢相信它是如此简单!

我不会把这个解决方案归功于...我偶然发现了一篇很棒的博客文章,它完全回答了这个问题(我甚至都不再看了!)这篇文章是由一个叫Davy的人写的,他是我的新英雄

文章在这里:http://www.drupalcoder.com/story/667-improving-search-results-when-working-with-node-references-in-drupal

他还写了一篇后续文章,进一步简化了这个过程!!http://www.drupalcoder.com/story/696-a-better-alternative-for-improving-search-results-when-working-with-node-references-in-dru

事实证明,编写CCK的优秀人员已经考虑过索引被引用节点的内容。在编辑内容类型的Display Fields部分,单击Search选项!它允许您确定在索引父节点时应如何索引被引用的节点...您可以将其设置为完整节点。这将索引被引用节点的全部内容,作为索引父节点的一部分。剩下的唯一要做的事情( Davy解释)是确保只要被引用节点的内容发生变化,父节点就会被重新索引。

票数 1
EN

Stack Overflow用户

发布于 2010-04-17 02:33:34

如果你能让你的视图同时搜索两种内容类型,我认为这确实成为了一个主题问题。您可以覆盖视图的各种主题模板,并以特定方式组织返回的节点数组。您还可以在输出期间简单地从列表中省略内容类型Y,并对内容类型X节点进行主题化,以列出CCK节点引用字段中的节点(这将类似于您提到的内容,但是您仍然可以在视图查询中保留内容类型Y,并在输出期间省略它)。可能会有一些性能影响,这取决于每个内容类型X节点的内容类型Y节点的数量。

我认为,无论你最终做什么,这都将是一个主题问题,尽管这是一个复杂的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2650382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档