在Drupal 6中将Logic添加到“Promoted to front page”功能

时间:2009-11-05 13:16:09

标签: drupal drupal-6

我正在尝试在Drupal 6中的'Promoted to front page'功能中添加一些额外的逻辑。也就是说,默认情况下,我想添加节点必须满足的其他条件,而不是默认情况下的布尔行为。在主页上。

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

有没有办法可以替换node_page_default()生成的内容? SQL没有动态生成,所以我想输出需要完全替换。

(我意识到所有这些都可以通过Views或者hook_cron完成,但我不想将这些方法用于相对较小的怪癖。)

提前致谢!

2 个答案:

答案 0 :(得分:5)

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

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

但是如果你已经在你的网站中使用了视图模块,我建议保存所有这些工作,只是为首页视图启用提供的覆盖,相应地调整其过滤器设置。

答案 1 :(得分:0)

我意识到这已经得到了解答,但你可能确实希望用视图来做到这一点。

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