2

你好 :) 我在一个面向 drupal 的网站上发布了同样的问题,但根本没有得到任何回复。我对自己发牢骚,希望这个网站更像 StackOverflow,所以我想,为什么不试试在这里问呢:)

我正在玩一个显示属于分类术语的节点的视图。该词汇表还有一个分类节点队列,其中包含所有术语的子队列。

到目前为止,该视图只有一个参数,即分类术语 ID,并按发布日期排序。但是,如果我想显示特定术语的所有节点,所有节点队列节点都在顶部,所有非节点队列节点(但仍然在这个特定分类术语下)在下面,按日期排序怎么办?

为了澄清,说这是我的词汇,我们称之为“活的东西”

Plant
--Fruit
--Vegetable
Animal
--Fish
--Dinosaurs

在 Dinosaurs 下可以找到以下节点:

Tyrannosaurus Rex (added 2009-01-01)
Megalosaurus (added 2009-01-02)
Velociraptor (added 2009-01-03)
Brachiosaurus (added 2009-01-04)

由于霸王龙和迅猛龙是非常棒的恐龙,因此它们也被添加到节点队列中,即子队列恐龙中:

子队列:

  1. 迅猛龙
  2. 霸王龙

最终视图应按以下顺序显示它们:

Velociraptor (it's first in the NQ)
Tyrannosaurus Rex (2nd in NQ)
Brachiosaurus (of the remaining dinosaurs, this is the newest)
Megalosaurus (oldest non-queue dinosaur)

我创建了与节点队列的关系,但它不允许我选择子队列,我只能限制为“活的东西”节点队列。我的第一个视图参数是术语 ID,所以我认为如果我添加“节点队列:子队列引用”作为第二个参数,我会得到预期的行为,但这仅显示节点队列中列出的恐龙。

对此问题的任何帮助或建议将不胜感激。谢谢!

4

4 回答 4

3

我并没有真正尝试过节点队列的子队列,所以我并不完全确定这一点。但是根据我对节点队列的经验,在使用视图时,您似乎仅限于它们支持的基本功能,并且无法真正进行您正在寻找的自定义类型。我认为你最好的选择是创建你自己的视图排序处理程序,你可以像这样对它进行排序。制作这样一个处理程序可能会非常棘手,因为您必须弄清楚视图和节点队列才能使其工作。在冒险走这条路之前,你真的应该考虑一下是否值得,除非你以前做过这种有观点的事情。

于 2009-08-10T10:54:38.427 回答
2

更多技巧:
您尝试完成的行为的解决方法可能是完全放弃使用节点队列。我不确定使用节点队列的全部动力,也不确定日期的重要性,但之前遇到过类似的问题,我已经能够使用以下方法解决它:

  1. 修改日期

如果您粘贴您的超酷恐龙,并修改元素的发布日期以使其与您的订单相匹配,您可以在单个视图中生成您正在寻找的内容。这有点做作,它的前提是并不真正关心发布日期(这总是取决于情况),也没有更紧迫的理由使用节点队列。也就是说,如果您不需要节点队列或日期,这是一个可行的解决方案。

Jeremy 的 2-view 解决方案也应该是可行的,我想说这是处理给定场景的另一种常见方法。

于 2009-08-13T22:01:22.683 回答
1

哈克解决方案警告!

在您的页面中使用 nodequeue 项拥有您的主要视图。

创建另一个视图,该视图作为非节点队列项的块公开。将此块放在主要内容区域中,并将其限制为仅显示在与第一个视图相同的 URL 上。

您可能需要对 url 变量进行一些摆弄,但我认为它会起作用。

于 2009-08-10T11:06:27.123 回答
0

为什么不连接每个节点队列后面的视图?(每个节点队列生成一个视图)您可以将标题(请参阅视图编辑页面中的“基本设置”)添加到包含调用 views_embed_view('first nodequeue') 的 php 代码的第二个节点队列(您只需要更改标题的输入格式到'php')。或者更确切地说,通过调用views_embed_view() 创建一个包含每个节点队列的自定义视图。这将有效地将一个节点队列放在另一个节点队列之上,如果它们具有相同的格式/内容类型,您甚至不需要弄乱字段:您可以使用 Row Style == Node. 至于你的论点,它们可以作为第三个参数传递给views_embed_view(文档没有说AFAICR,但我在论坛中找到了一个帖子(http://drupal.org/node/99721) 表示 args 可以作为 '$current_view->args' 发送到正在嵌入的视图)。

高温高压

于 2009-08-14T19:49:54.680 回答