【问题标题】:Drupal 7 custom module load css for specific theme templateDrupal 7 自定义模块加载特定主题模板的 css
【发布时间】:2013-03-28 23:04:29
【问题描述】:

我创建了一个自定义模块,并且我设置了这样的主题模板:

/**
 * Implemtnation of hook_theme()
 */
function custom_slider_theme($existing, $type, $theme, $path) {
    return array(
        'custom_slider' => array(
            'variables' => array('nodes' => NULL),
            'template' => 'custom_slider',
        ),
    );
}

一切正常。

我找不到的是如何为该模板加载 css 文件,因此当加载 custom_slider.tpl.php 时,将加载相关的 css 文件。我不需要在每个页面上都加载 css。我宁愿只在需要时拨打drupal_add_css()

非常感谢任何帮助。

C

【问题讨论】:

    标签: drupal-7 drupal-theming


    【解决方案1】:

    您可以将其添加到预处理函数中,例如

    function custom_slider_preprocess_custom_slider(&$vars) {
      drupal_add_css(drupal_get_path('module', 'custom_slider') . '/file.css');
    }
    

    【讨论】:

    • Thnaks @Clive - 但是如果我希望模块能够自给自足并加载它自己的资源怎么办?我知道如何将它添加到模块的 .info 文件中,但我只希望在使用该模块中使用的模板时加载它。
    • 不确定我是否理解 - 除非我错过了什么,否则上述方法正是如何做到这一点的?
    • 您可以在定义主题的同一模块中为主题实现预处理功能 - 这可能是混乱吗?
    • 很抱歉给您带来了困惑。此函数是否将css添加到每个页面或仅使用模板custom_slider.tpl.php的页面,该模板仅在url为/mycustomslider时调用
    • 只有在调用theme('custom_slider')时才会添加CSS,所以不会添加到任何没有调用它的页面
    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多