显示相似节点

Posted

技术标签:

【中文标题】显示相似节点【英文标题】:Displaying similar nodes 【发布时间】:2011-01-20 16:32:18 【问题描述】:

我今天在使用 Drupal 时遇到了一些问题。

我想在页面上显示一个节点(产品),在该节点下方,我想显示 3 个相似的节点(产品)。相似之处:具有相同的分类 ID 或附加了“提升”标签。

我尝试将相关节点制作成一个视图,该视图仅在我们在产品页面上时显示为块。我没有走太远。

我的第二个想法是制作一个面板页面,其中包含 2 个视图,一个用于产品,一个用于相关产品。我也没有走多远。

有人知道最简单的方法吗?

更新:

我已经尝试了这两个答案,但我没有收到任何相关产品。执行的 SQL 查询(term id = 1)是:

SELECT node.type AS node_type, node.title AS node_title, node.nid AS nid, node.created AS node_created FROM  node node INNER JOIN taxonomy_index taxonomy_index_value_0 ON node.nid = taxonomy_index_value_0.nid AND taxonomy_index_value_0.tid = :views_join_condition_0 WHERE (( (node.type IN ('product')) AND (taxonomy_index_value_0.tid AND '') AND( (taxonomy_index_value_0.tid IN ('1')) ))) ORDER BY node_created DESC LIMIT 10 OFFSET 0

当我手动执行查询并从查询中删除 AND (taxonomy_index_value_0.tid AND '') 时,我确实收到了相关产品。

有谁知道是什么原因导致代码被添加到查询中以及如何修复它?

更新 2: 我已删除“每个参数允许多个术语”,现在正在获取相关产品。不过我不知道这对我的网站意味着什么。

更新 3: 顺便说一下,我正在使用 Drupal 7。

【问题讨论】:

听起来你在正确的轨道上,你具体有什么问题? 我在显示类似产品时遇到了问题。我不知道处理这个问题的最佳方法。我不知道如何处理参数,如果我必须处理它们。 【参考方案1】:

使用面板覆盖您的节点视图。并使用“分类 ID 参数”创建一个视图块,您需要选择默认参数选项作为 php 代码并放置此代码。

$node = node_load(arg(1));
if($node) 
    foreach($node->taxonomy as $term) 
        $term = $term->tid;
        return $term;
       

我刚刚使用面板 + 视图魔法启动了一个网站。 http://sgigulf.org/culture/synopsis-of-performers-showcased-by-sgi-gulf

【讨论】:

您能详细说明一下吗?我是 drupal 新手。 使用面板,您可以覆盖默认节点显示。转到 admin/build/pages,启用“节点视图”,单击编辑并添加一个变体。单击“选择规则”并选择您要覆盖的节点类型。如果你做得正确,你应该得到你的节点的空白页。现在在一侧添加您的节点内容,并使用上面提到的 PHP 代码的默认参数放置您的视图。我希望这会有所帮助。【参考方案2】:

看看 RelatedContent 模块。模块链接和下面的一些教程:

http://drupal.org/project/relatedcontent http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-create-a-related-pages-block http://www.hankpalan.com/blog/drupal/related-content-views-2-drupal

你说你的显示器有问题。在这种情况下,将上述说明中的视图设置为一个块,并将其显示在节点内容下方的区域中,尽管这假设您的主题中有一个区域直接位于您的内容下方。

【讨论】:

【参考方案3】:

更改为时可以有多个术语

$node = node_load(arg(1));
if ($node) 
    $ret = array();
    foreach ($node->taxonomy as $term) 
        $ret[] =  $term->tid;
       
    return implode('+', $ret);

return '';

implode 中的“+”是 OR。如果你想要 AND,而不是使用 ','

【讨论】:

以上是关于显示相似节点的主要内容,如果未能解决你的问题,请参考以下文章

使用 OwnerDrawText 模式定位和突出显示 TreeView 节点文本

Matlab:信号频谱相似,但 xcorr 显示不相似

两个查询:按列分组、减去相似列、显示总计

具有相似显示效果的标签

需要帮助来显示图例和与数据相似的颜色代码

如何制作在所有窗口分辨率下显示相似行为(布局)的 SWT/JFace 对话框