试图用我自己的覆盖 View 的 views-exposed-form,但是它不会显示我的主题

Posted

技术标签:

【中文标题】试图用我自己的覆盖 View 的 views-exposed-form,但是它不会显示我的主题【英文标题】:Trying to override View's views-exposed-form with my own, however it will not show my theme 【发布时间】:2015-09-24 17:41:55 【问题描述】:

我已经从视图模块的主题文件夹:views-exposed-form.tpl.php 复制到了主题/mytheme/views(也尝试过主题/mytheme)并重命名为views-exposed-filter--commerce_reports_products.tpl .php(和视图暴露过滤器--commerce-reports-products.tpl.php)。

刷新缓存并重新扫描视图中的模板后,它仍然不会显示。如果我编辑原始views-exposed-form.tpl.php,它将显示更改。

我从视图中的主题链接获得视图名称:views-view-field--commerce-reports-products.tpl.php

有谁知道我还需要做什么,或者为什么这不起作用?

【问题讨论】:

【参考方案1】:

实际上,视图不会像为字段本身那样自动为公开的过滤器提供模板建议。所以你需要为此做更多的事情:

    使用devel_themer 模块找出暴露过滤器的主题是什么函数/模板 为该主题函数/模板创建预处理器。然后,在您的预处理器中,您可以插入动态模板建议,这些建议将根据您想要的任何条件触发。您可以在自定义主题的 template.php 文件或自定义模块之一中创建此预处理器。此D.O. article 将指导您创建动态模板建议。

假设您将根据 URL 路径显示不同的视图。如果是这种情况,那么您可以在预处理器中使用 Drupal 的 arg() 函数来确定您当前正在显示的视图显示是什么,并使用该信息构建您的模板建议。

一旦你正确设置了你的建议,Drupal 会自动调用适当的模板,你有不同的基于路径的过滤器模板。

【讨论】:

所以我尝试了 1 号,开发模块向我显示名称应该是 views-exposed-form--commerce-reports-products--page.tpl.php 但这对我没有任何作用,第二个我尝试添加:function thevault_preprocess_views_exposed_form(&$variables) watchdog('notice', "test"); dpm($变量, "va"); 在 template.php 文件中,这对我也没有任何作用。

以上是关于试图用我自己的覆盖 View 的 views-exposed-form,但是它不会显示我的主题的主要内容,如果未能解决你的问题,请参考以下文章

覆盖标准 ID 标量

用自己的视图替换状态栏

覆盖另一个程序集中的内部抽象方法

用我的尺寸在窗口中打开模态 ViewController

CMake:覆盖查找模块

覆盖Android中文本选择(在WebView中)的默认上下文操作栏