Drupal打造中国化主题系列教程
前沿
进来在QQ和Drupalchina有很多人在问我,Drupal使用者中文社区drupaluser]的主题是如何制作的,这大概是Drupaler看惯了garland,觉得一个我的主题比较中国化,比较符合国内CMS的版式;利用元旦期间,我在此将连载出Drupal使用者的中国化主题制作过程和大家一起分享;本系列文章计划将分为6个部分,从设计到制作整个流程,我尽量详细的讲述,以下为基本的制作流程目录,敬请期待;Drupal打造中国化主题系列教程(1)--分析实现方法
php实例代码教程
Drupal打造中国化主题系列教程(2)--创建区域
Drupal打造中国化主题系列教程(3)--静态区块
Drupal打造中国化主题系列教程(4)--创建tpl文件
Drupal打造中国化主题系列教程(5)--创建views列表
Drupal打造中国化主题系列教程(6)--覆写views主题
分析实现方法
在此介绍Drupaluser站点的主题制作了。这一个主题制作的过程,并非完全符合Drupal 主题制作的风格和习惯,也有很多错误的地方,希望大家在看完之后,能从我的讲述当中,对Drupal的主题制作有所了解,能总结出更优秀的经验,供大家分享。
Drupal制作主题,主要有2个部分是比较有难度,一个就是静态页面的制作,要熟悉W3C 的标准,熟悉div+CSS,熟悉各种网页制作工具,在一个就是由静态页面转化成Drupal 主题,即将内容放置到Drupal的区块当中;我在这里就不再详细介绍静态页面的制作了,如果你是公司,肯定有专门的美工设计人员,首先请策划人员做好产品设计,然后就可以请美工人员制作出漂亮的静态页面了;
我们在这里,从拿到静态页面以后开始讲述,首先要分析一下这一个主题的版式和制作流程(1)主题分为前后台两个部分,我使用的是drupal经典主题garland更改得到我的主题的,这样我只覆写前台的主题,后台的样式依然采用的garland,因为后台都是自己看,适用默认的garland无论是标准还是大小,都是比较适合做管理界面的。
以后无特殊声明,文中所叙述的“Drupaluser主题”均指的是前台的主题Drupaluser 的前台主题主要是首页,列表页面,内容显示页面和其他静态页面,也就是静态页面只需要做4个页面就OK。
首页我们使用page-front.tpl.php文件覆写
列表页面我们使用page-taxonomy.tpl.php文件覆写
内容显示我们使用page-story.tpl.php和node-story.tpl.php来覆写
其他的静态页面我们使用page-page.tpl.php和node-page.tpl.php来覆写
至于为什么能采用上述方式,请参阅drupaluser/category/theme中的相关模板覆写的文章,采用上述方式是因为这样可以不用修改garland的默认模板,不会影响到后台模板的样式,这样看起来,比较像前后台相分离,这样也比较符合中国人使用CMS前
后台相分离的习惯
(2)流程方面,首先要在info文件中添加区域,然后将一部分静态的内容做成区块,直接写在block文件中,例如drupaluser中最下面的版权声明和友情链接,都是直接书写html到区块中的方式,然后将4个html页面布局拆分,使用views的要做views 的tpl文件,其他的相应制作上面所述的4个文件的tpl文件就OK,我们下面将一步一步详细说明。
创建区域
我们首先分析一下Drupal使用者中文社区drupaluser ]的主题应该划分为哪一些区域,首页分为上、中、下三个大区域,右边有可以分为上下两个大块区域,这样划分,也是为了照顾美工方面比较容易用css控制div的float,所以我们定义了
regions[top]          = Top
regions[left_region1]  = Left  Region1
regions[left_region2]  = Left  Region2
regions[right_region1] = Right Region1
regions[right_region2] = Right Region2
你或许问我,为什么不使用garland定制好的左右区域呢,如果我把区块放置在garland 的左边,那么在后台也将会显示那个区块,这样是显示在几个页面还可以通过设置区块的显示位置来控制,而一旦多了,比较乱,所以我们对前台的左右区域重新订制,当然你仍然可以只用garland的主题左右区域,我为了以后好扩展,使用了此方法。
对于其他的列表页和内容页面,我定义了一个右侧的区域,这个主要考虑以后会放置AD,所以起了个名字叫做AD region,呵呵,目前主要防治的是最新文章的一个views列表regions[ad_region]    = AD  Region
提醒:在drupal6中,如果你自定义了区域,则需要把默认的5个区域也写上,否则是写你自己定义的区域,它不会显示默认的5个区域如下:
regions[left]          = Left sidebar
regions[right]        = Right sidebar
regions[content]      = Content
regions[header]        = Header
regions[footer]        = Footer
在下一讲当中,我们介绍添加几个静态的区块
静态区块
对于一些不经常变化,需要硬编码而且需要多次调用的内容,我采用了直接将其html代码放入block中,然后将block放置在region中就OK比如Drupal使用者中文社区[ drupaluser ]最上面的一个区块,就是硬编码放上去的,包含了最上面的一个导航和下面的Logo部分导航“管理”--“站点创建”--“区块”;选择添加区块;
在正文中将静态html页面中的代码写入即可,这里要提示的是,需要启用php代码模块,
因为在这里的路径,需要使用php代码写入drupal的变量,输入格式当然要使用php code 格式;
提示:在区块中使用php code非常危险,如果php代码输入错误,有可能整个站点将不能访问;笔者就因为粗心,搞错过一个字母,而不得已修改数据库才删除错误的,请各位谨慎使用。
页面可见性设置中,设置“在特定页面上显示区块”,这里填入你要将此区块显示在那一个页面上在这里解释一点,你这样添加到页面的区块,drupal会使用block.tpl.php模板显示区块的标签和css,所以我们在page中并没有使用$style样式添加css,而是手动添加的css样式;即便是有drupal默认的div标签包着,也不会影响到我们静态页中做好的样式,请大家放心使用就OK。
下一节,我们将自定义page-contenttype.tpl.php和node-contenttype.tpl.php的页面创建tpl文件
有很多朋友拿到了我的主题,启用以后却发现和我的主题有很多差别,这是因为我的主题是定制的,不像drupal官方提供的那样拿过来就能直接用,区块的位置和我的后台设置的不一样的话,样式都会乱所以我在这里只是提供一个制作方法;
在第一部分当中,我已经介绍过了,Drupal使用者中文社区[ drupaluser ]的tpl 文件主要是以下几个
首页我们使用page-front.tpl.php文件覆写
列表页面我们使用page-taxonomy.tpl.php文件覆写
内容显示我们使用page-story.tpl.php和node-story.tpl.php来覆写
其他的静态页面我们使用page-page.tpl.php和node-page.tpl.php来覆写
其中page-story.tpl.php 和page-page.tpl.php不是默认就会起作用,比较常见的有两种方法可以让他起作用,
一种是drupal的风格,在template.php中覆写函数实现,这种方法老葛的zhupou上面有介绍,在此不再赘述了另一种是比较容易理解的风格,可以在page.tpl.php上面写一个判断,让他根据内容类型自己选择模板文件,如以下写法:
<?php
if($node->type == 'page'  && arg(2) != 'edit'&& arg(2) != 'delete') { include
'page-page.tpl.php'; }
else if($node->type == 'story'  && arg(2) != 'edit'&& arg(2) != 'delete') { include 'page-story.tpl.php'; }
else{ //include page.tpl.php中的原来的函数。}
?>
备注:在模板中不能使用exit 函数[09年2月10日更新]
这样可以和覆写函数得到一样的效果,这样做,只是为了不改动garland默认的page.tpl.php,为了我的后台,呵呵!这里面的样式就可以自己写了,我截取一段分析一下page-front.tpl.php中的
(1)输出了自定义的css,而没有用$style,也没有在info文件中加入这两个样式
<link rel="stylesheet" type="text/css" href="<?php print
base_path().path_to_theme();?>/css/layout.css">
<link rel="stylesheet" type="text/css" href="<?php print
base_path().path_to_theme();?>/css/main.css">
(2)输出了几个区域中的内容
<div id="mainleft">
<div class="partA">
<?php print $left_region1 ;?>
<div class="c"></div>
</div>
<div class="partB">
<?php print $left_region2 ;?>
<div class="c"></div>
</div>
<div class="partC">
<?php print $left_region3 ;?>
</div>
</div>
(3)输出了导航菜单
<div id="menu">
<?php print theme('links', $primary_links) ?>
</div>
其他的page页面类似,非常简单,id class写好了用css控制样式
在下一讲当中,我将介绍一下我的views列表的创建;这是中国化主题的关键之处
创建Views列表
我估计大家感觉Drupal使用者[ drupaluser ] 站点最中国化的地方应该是四个文章列表了吧,呵呵
国内CMS的一个特点就是做列表了,这一点比较符合国人的习惯,这一讲当中,将介绍一下views生成文章列表。
详细的views使用,请参看drupaluser站内的相关文章,在此只是大概说一下主要的和需要注意的地方
(1)进入views,点击“添加”,
views name:views区块的名称,比如Drupal_theme_block
views type  :选择“节点”;
(2)进入views的详细配置页面,
Fields 项目中选择“节点:标题”和“节点:post date”,即列表包含了两项,即标题和
发布时间,不要忘记标题
关联到节点的url。
过滤器项目就是选择你要生成那一个分类的内容了,这里选择了Drupal主题制作分类的文章,其他根据自己的需要添加
Sort criteria :排序,一般我都是有两个排序,首先按照是否置顶,其次是发布时间basic setting中有几
个需要注意的地方
style 最好选择列表方式
Row style:最好选择Fields方式
这样点击下面的预览看看是不是自己想要的文章列表,这样功能方面我们就OK了,
下一讲,我们将介绍一下如何覆写views输出的样式,做成Drupaluser,cn首页那样的文章区块
覆写Views主题
本章节只是大概介绍一下Drupal使用者中文社区[drupaluser]首页当中下面四个views列表区块的覆写方式,更详细的介绍,请期待Views2.0入门教程[2009年2月] 在根据上一章节当中创建好的views中,在views列表页面的操作框右侧选择“block”,点击add display
这样在basic settings中的Theme infomation中,会看到类似以下四个文件的覆写(1)覆写全局输出,整个views布局,如果你的views是一个页面的话,通过覆写这个文件,可以改变页面的布局
* Display output: views-view.tpl.php, views-view--Drupal-Using-block.tpl.php, views-view--default.tpl.ph
p, views-view--Drupal-Using-block--default.tpl.php (2)覆写views列表,即可以通过次文件覆写掉views的列表的样式,我就是覆写的这一个文件
* Style output: views-view-list.tpl.php,
views-view-list--Drupal-Using-block.tpl.php, views-view-list--default.tpl.php, views-view-list--Drupal-Using-block--default.tpl.php
(3)覆写views列表一行的样式
* Row style output: views-view-fields.tpl.php,
views-view-fields--Drupal-Using-block.tpl.php, views-view-fields--default.tpl.php, views-view-fields--Drupal-Using-block--default.tpl.php
(4)覆写views列表中每一个字段的样式,这里只输出了一个title,所以只有一个。
* Field 节点: 标题(ID: title): views-view-field.tpl.php,
views-view-field--title.tpl.php, views-view-field--Drupal-Using-block.tpl.php, views-view-field--Drupal-Using-block--title.tpl.php,
views-view-field--default.tpl.php, views-view-field--default--title.tpl.php,
views-view-field--Drupal-Using-block--default.tpl.php,
views-view-field--Drupal-Using-block--default--title.tpl.php

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。