代码之家  ›  专栏  ›  技术社区  ›  Ace

Drupal问题:视图、参数和节点

  •  2
  • Ace  · 技术社区  · 15 年前

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

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

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

    为了澄清,假设这是我的词汇表,我们会称之为“活的东西”。

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

    在恐龙下面发现了以下节点:

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

    由于霸王龙和迅猛龙是非常了不起的恐龙,它们也被添加到了nodequeue生物,子队列恐龙中:

    子队列:

    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)
    

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

    对此问题的任何帮助或建议都将受到高度赞赏。谢谢!

    4 回复  |  直到 15 年前
        1
  •  2
  •   googletorp    15 年前

    我并没有对nodequeues的子队列做过太多的尝试,所以我不完全确定这一点。但是从我对nodequeues的经验来看,在使用视图时,您似乎只局限于它们支持的基本内容,不能真正执行您正在寻找的定制类型。我认为您最好的选择是创建自己的视图排序处理程序,在这里您可以这样排序。做这样的处理程序可能会非常困难,因为您必须同时计算视图和节点队列才能使其工作。在踏上这条道路之前,你真的应该考虑一下它是否值得,除非你以前用视图做过这种事情。

        2
  •  2
  •   William OConnor - csevb10    15 年前

    更多黑客:
    你试图完成的行为的一个解决方法可能是完全放弃使用nodequeues。我不确定使用nodequeues的全部动力,也不确定日期的重要性,但我之前遇到过类似的问题,我可以使用以下方法来解决:

    1. 粘稠的
    2. 修改日期

    如果你粘上你的超级酷恐龙,修改元素的发布日期,使它们符合你的顺序,你就可以在一个视图中生成你想要的东西。这有点像胡说八道,而且它的前提是不真正关心出版日期(总是取决于具体情况),也没有更紧迫的理由使用nodequeue。也就是说,如果你不需要nodequeue或日期,这是一个可行的解决方案。

    Jeremy的2视图解决方案也应该是可行的,我认为这是处理给定场景的另一种常见方法。

        3
  •  1
  •   Jeremy French    15 年前

    黑客解决方案警告!

    在页面中显示nodequeue项的主视图。

    创建另一个显示为非nodequeue项的块的视图。将此块放在主内容区域中,并将其限制为仅在与第一个视图相同的URL上显示。

    您可能需要对URL变量进行一些修改,但我认为它可以工作。

        4
  •  0
  •   mikewaters    15 年前

    为什么不在每个节点后连接视图?(每个节点都生成一个视图) 您可以在第二个nodequeue中添加一个头部(参见视图编辑页面中的“基本设置”),该nodequeue包含调用视图的php代码“嵌入”视图(“第一个nodequeue”)(只需将头部的输入格式更改为“php”)。或者,通过调用视图嵌入视图()创建一个包含每个节点的自定义视图。这将有效地将一个nodequeue置于另一个nodequeue之上,并且如果它们具有相同的格式/内容类型,您甚至不需要在字段上乱搞:您可以使用row-style==node。就你的论点而言,它们可以作为第三个参数传递给视图嵌入视图(文档不这么说,但是我在论坛上找到了一个帖子( http://drupal.org/node/99721 )指示的参数可以作为“$current_view->args”发送到要嵌入的视图)。

    高温高压