【发布时间】:2010-09-18 16:08:03
【问题描述】:
我正在尝试为日历视图设置主题,有没有办法用模块覆盖主题路径而不是覆盖模板文件?
我想创建一个覆盖主题功能的模块,这样我就可以在我的模块中包含模板文件而不是日历模块。
提前谢谢
【问题讨论】:
我正在尝试为日历视图设置主题,有没有办法用模块覆盖主题路径而不是覆盖模板文件?
我想创建一个覆盖主题功能的模块,这样我就可以在我的模块中包含模板文件而不是日历模块。
提前谢谢
【问题讨论】:
您可以在模块中覆盖视图模板,请参阅 Views 高级帮助的 Using default views in your module 页面中的“在模块中设置视图主题”。由于日历是一个视图插件,我认为视图模板的基本行为适用。如果在 hook_theme($existing, $type, $theme, $path) 中声明自己的主题输出不适用于日历视图,则可能需要使用 hook_theme_registry_alter(&$items)。
【讨论】:
我认为你不能在一个模块中做这样的事情,至少不能以一种干净的方式。
Drupal 将功能(模块)和展示(主题)分开。将两者分开是很有意义的。
所以如果你可以在一个模块中做这样的事情,我不会感到惊讶。但是你会反对 Drupal,很难做到,而且没有充分的理由。
如果您想创建可重用的样式、模板覆盖等,请改用子主题系统。
【讨论】:
看来您在这里要做的是重写calendar 模块的功能,以一种在主题层有机会干预之前完全取代正常日历行为的方式。
在这些(希望很少见)的情况下,最好的办法是创建自己的 calendar 分支作为新模块,并以现有的 calendar 代码作为起点。直接修改模块代码比尝试破解 Drupal 的基本功能/显示交互要容易得多。
我通常不会推荐这个,但它似乎适合你的情况。
请务必将任何改进发送回日历开发人员,以便我们都能受益:)
【讨论】: