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

将逻辑添加到Drupal 6中的“提升到首页”功能

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

    我试图在Drupal6中的“提升到首页”功能中添加一些额外的逻辑。也就是说,在默认情况下,我希望添加节点在显示在主页上之前必须满足的其他条件,而不是布尔行为。

    具体来说,我不希望过去的事件(由cck日期字段确定)出现在主页上,即使它们被提升了。

    有什么方法可以替换 node_page_default() ?那里的SQL不是动态生成的,所以我认为需要完全替换输出。

    (我意识到所有这些都可以通过视图来完成,或者可能通过hook_cron来完成,但是我不愿意将这些方法用于一个相对较小的怪癖。)

    事先谢谢!

    2 回复  |  直到 15 年前
        1
  •  5
  •   Henrik Opel    15 年前

    AS node_page_default() 电话 db_rewrite_sql() 在查询中,您可以尝试实现 hook_db_rewrite_sql() 在自定义模块中添加附加限制。 我不推荐这个 ,因为您需要在钩子实现中以某种方式识别原始查询,而这将是脆弱的-其他模块也可能重写它,并且它可能随更新而随时更改,从而破坏您的更改。

    或者,您可以创建自己的版本 节点页面默认值() 通过将其复制到自定义模块,根据需要修改它(不要忘记重命名),然后实现 hook_menu_alter() 将原始页面回调切换到 node_page_default 在“node”路径上使用您的自定义版本。(您也可以通过自定义的回调注册自己的FrontPage路径 hook_menu() 并调整您的FrontPage设置以指向该设置。)

    但是,如果您已经在站点中使用了“视图”模块,我建议您保存所有这些工作,并启用为FrontPage视图提供的覆盖,相应地调整其筛选设置。

        2
  •  0
  •   John Fiala    15 年前

    我知道这个问题已经得到了解答,但您可能确实想用视图来解决这个问题。

    如果不是视图,那么我将继续更改首页路径,并通过hook_menu()创建您自己的页面并在那里实现它。