打开前面创建的 ninghao_admin 这个子主题,在它的下面新建一个文件,命名成 template.php ,在这个文件里我们可以添加一些自己的东西到主题里,或者覆盖,更改主题,还有其它模块里提供的一些主题功能。
先用一个 php 的开始标记,下面我要做的是添加一个样式表,这个样式表里的样式就是覆盖掉了 adminimal 主题里的一些样式。
这里用一个 template_preprocess_html ,这是一个预处理的钩子,在使用 html.tpl.php 这个模板文件的时候会调用它,前面的 template 要换成主题的名字,就是 ninghao_admin,后面是 preprocess_html .. 函数会用引用的方式接收到一个参数,就是 &$variables ..
在它里面我们可以先得到这个主题的路径 , $theme_path 等于,得到模块或者主题的路径可以使用 drupal_get_path,要得到的是主题的名字,所以第一个参数是 theme,如果要得到模块的路径 ,它的值应该是 module ,后面是主题或者模块的名字, nignhao_admin
$theme_path = drupal_get_path('theme', 'ninghao_admin');
添加样式表,可以使用 drupal_add_css .. 第一个参数是样式表的路径,用当前主题的路径,加上 /css/ ,样式表的名字是 style.css ..
这个样式表会替换掉这个主题的父主题 adminimal 里面的 style.css 的样式表。
这个函数的第二个参数可以是一些选项,把它们放到一个数组里, 用一个 group ,设置成 CSS_THEME,这个值可以决定添加的这个 CSS 样式表的先后顺序,再用一个 media,设置成 all,表示在所有设备上都使用这个样式表,最后可以再用一个 weight 选项,它的值设置的大一些,比如 1000 ,因为我们添加这样式表是覆盖用的,所以可以让它的位置往下一些,这样才能保证覆盖的样式生效。
drupal_add_css($theme_path . '/css/style.css',
[
'group' => CSS_THEME,
'media' => 'all',
'weight' => 1000
]);
保存 ... 在 ninghao_admin 这个主题下面创建一个样式表,css/style.css ,把要覆盖掉的样式放到这个样式表里 ... 再保存一下。
再打开 adminimal_theme,css,复制一下里面的 images 目录,选中这个目录,按一下 d ,把它放到 ninghao_admin 下面的 css 这个目录的下面。再复制一下主题根目录下的这个 images 目录,把它放到 ninghao_admin 的根目录下 ...
清空一下缓存。 再回到后台刷新一下 ... 现在后台就应用了我们覆盖的样式,查看一下源代码 ... 搜索 style.css,你会看到这个样式表是来自 ninghao_admin 这个主题。
回到终端,再去提交一下对项目的修改。
git add .
git commit -m '自定义 ninghao_admin'
https://bitbucket.org/snippets/ninghao/5yRxM/ninghao-admin
https://api.drupal.org/api/drupal/includes%21theme.inc/function/template...
https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_...
https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_...