Bo-Blog模板的设计与制作

来自站长百科
跳转至: 导航、​ 搜索

第一部分 风格组成

一个完整的Bo-Blog 2.0的风格(以下简称风格)由以下几个部分组成:

风格文件夹,位于template/文件夹下一个完整的Bo-Blog 2.0的风格(以下简称风格)由以下几个部分组成:

  • 风格的CSS文件 style.css;
  • 风格的图片文件夹;
  • 风格的信息文件 info.php;
  • 风格的结构定义文件 element.php;
  • 风格的缩略图文件。

其中,粗体字标出的文件为必需。

这些文件的作用和注释如下:

1. CSS文件

该文件是整个风格的最主要部分,我们建议所有的风格都尽力在配合默认架构 default/template.php 文件的基础上修改。也就是说,建议只修改CSS文件达到您想要的效果,而不是修改模板架构本身。CSS+DIV的网页排版方式符合标准,也能创造出风格迥异的丰富效果来。

有关CSS文件中各个Class的命名和对应区域,请阅读第三部分。

2. 风格的图片文件夹

我们建议您在专门建立一个文件夹以存放该风格用到的图片,而不是将所有图片都存放在风格的根目录下。

推荐您在风格所在的文件夹下建立images子文件夹,放置用到的图片文件。

3. 风格的信息文件 info.php

这个文件存放了风格的作者等重要信息。它必须是没有错误的PHP文件,编码必须采用UTF-8。(我们推荐使用的文本编辑器见第二部分。)

下面是默认风格的 info.php ,存在于 template/default/ 文件夹下。结合这个文件为您说明该文件的结构。注意:双斜杠 // 后面以及 和 /* 与 */ 之间的文字为注释,事实上您的文件不需要包括这些注释。

Boblog16.gif
Boblog17.gif

4. 风格的结构定义文件 element.php

这也是一个PHP文件,也必须使用UTF-8编码。它规定了模板的结构,也就是各个区域具体的HTML代码。有关这个文件的详细说明,请参考第五部分。

5. 风格缩略图文件

大小是400*300像素,建议为JPG、GIF和PNG格式。为了不增加额外的空间负担,不建议您截取精读太高的缩略图。

第二部分 一些建议和要求

1. 文本编辑器

编辑文本文件的编辑器可谓多如牛毛,您完全可以选择最顺手的使用。但是有一些情况您需要了解。
Bo-Blog采用 UTF-8 编码,因此所有文本文件(风格中涉及的是PHP文件)必须储存为 UTF-8 编码。另外,部分文本编辑软件,如Dreamweaver、记事本等,在保存UTF-8文件时会在文件最开始加入UTF-8识别记号(BOM)。BOM在 WINDOWS下打开文件时不可见,但PHP在读取文件时仍会将其作为文件的一部分,由此会产生cookie失效(无法登入),模板无法顶住页面顶部等现象。

解决的方法:

建议您使用 Editplus 2.12 或者 EmEditor 编辑PHP文件。它们对无BOM的UTF-8文件兼容较好;
UltraEdit用户需将 Write UTF-8 BOM header to ALL UTF-8 files when saved 选项设置为关;
其它文本编辑器用户,在编辑完后如发现程序异常,可参考这篇文章解决。

2. 针对发布者的建议

您可以将您修改、制作的风格发布到论坛的2.0模板风格专版,我们会非常感谢您的分享。
对于出色的风格,将被收入官方网站的“风格”栏目(筹)。

对发布者有这样的一些建议:

1. 兼容性

建议您在制作风格时考虑到浏览器的兼容问题。由于 2.0 采用的是CSS+DIV布局,因此可能在不同的浏览器上存在不同的显示效果。建议您在发布时考虑到主流浏览器的兼容问题。一个方法是:在发布的帖子里注明:在IE下测试通过;暂不兼容Firefox;可在IE、Fx、Opera下正确显示 等等类似的字样。
对于收入官方风格栏目的风格,至少需要做到同时与IE和Firefox兼容。

2. thumb.db

Windows XP会在您的图片文件夹下生成一个名为 thumb.db 的隐藏文件。当您把这个文件也打包到压缩包里时,会导致压缩文件体积增大不少!所以建议您不要把这个文件放到压缩包里。以常用软件winrar为例,可以在压缩完成后,打开压缩文件,就能看到这个文件是否存在了。

3. 压缩格式

推荐的压缩包格式为: Zip和Gzip两种。

4. 源文件

您可以自主决定是否将图片的源文件放入压缩包。如果您不打算提供源文件的话,建议您提供一张没有加过自己站名的空白logo图,方便下载者修改。当然,这都出于自愿。

5. elements.php 文件

这个文件可能会随着程序的不断完善而不断修改,因此如果非必要,建议您使用默认的elements.php,也就是在风格的info.php中将structure指向template/default/elements.php(请参考第一部分的说明)。

第三部分 CSS

1. 总布局

提示:使用Firefox的DOM查看器可以方便地查看页面的结构。

总布局参考图如下:

图中色块代表了一个div,色块注释文字表示的是这个div的class(或ID) name。

请点击在新窗口中查看图片。

Boblog18.png

2. CSS详解

下面介绍主要的CSS类的用途和一些说明。请参考整体框架图阅读。

2.1 整体框架
#wrapper - 整个页面的框架。
#innerWrapper - 内嵌在wrapper里的整个页面的框架。
2.2 顶部框架
#header - 整个顶部框架
#innerHeader - 内嵌在header里的框架。
.blog-header - 包含blog标题和描述。
h1 - blog的标题。
.blog-desc - blog的描述语。
menu - blog的顶部模块(导航条)。
2.3 主体框架
#mainWrapper - 整个主体部分的框架,包含了侧边栏和主内容这两个框架。
2.4 侧边栏框架
.sidebar - 整个侧边栏框架。
#innerSidebar - 内嵌在sidebar内的框架。
.sidebar-hide - 当侧边栏关闭时的侧边栏样式。(display: none;)
.panel - 具体到某一个侧边栏项目的总框架。
.panel h5 - 侧边栏项目的抬头部分。
.panel-content - 侧边栏项目的主要内容区域。
.panel-content li - 侧边栏包含列表项的样式。
.panel-content li.indent - 侧边栏列表项缩进后的样式(如链接前的列表符号)。
.search-field - 搜索框样式。
2.5 主内容框架
.content - 主内容的总框架。
#innerContent - 内嵌于content的框架。
.announce - 公告框样式。
.announce-content - 公告内容样式。
.article-top - 分页条(位于顶部)样式。
.article-bottom - 分页条(位于底部)样式。
.pages - 分页条文字样式。
.pagelink-current - 当前页文字样式。
..textbox - 每篇日志的总框架。
.textbox-title - 日志标题位置样式。
.textbox-title h4 - 日志标题文字样式。
.textbox-label - 发表日期栏样式。
.textbox-fontsize - 日志工具条(字号选择等)样式。
.textbox-content - 日志内容样式。
.textbox-bottom - 日志底部工具条样式。
.textbox-adminbar - 管理工具条样式。
.textbox-tburl - Trackback地址条样式。
.tags - tags显示条样式。
.prev-article - 上一篇提示文字样式。
.next-article - 下一篇提示文字样式。
2.6 日历部分
#calendar - 日历总框架。
.calendar-main - 日历总体样式。
.calendar-top - 日历顶端文字样式。
.calendar-year - 年的样式。
.calendar-month - 月的样式。
.calendar-weekday-cell - 星期的样式。
.calendar-day - 普通工作日样式。
.calendar-saturday - 星期六的样式。
.calendar-sunday - 星期日的样式。
.calendar-today - 今日样式。
2.7 评论显示框
.commentbox - 单条评论(或留言,下同)整体框架。
.commentbox-title - 评论标题样式。
.commentbox-label - 评论日期文字样式。
.commentbox-content - 评论内容样式。
.trackbackbox - 单条trackback框架。
.trackbackbox-title - trackback标题样式。
.trackbackbox-label - trackback日期文字样式。
.trackbackbox-content - trackback内容样式。
2.8 表格样式
.listbox - 表格整体框架。
.listbox-table - 表格的宽度。
.listbox-header - 表格头部文字样式。
.listbox-entry - 表格正文文字样式。
2.9 添加评论框
.formbox - 评论表单所在框。
.formbox-title - 评论表单标题文字样式。
.panel-smilies - 表情选择栏。
.panel-smilies-title - 表情栏文字样式。
.panel-smilies-content - 表情栏内容样式。
2.10 提示页样式
.messagebox - 消息框整体。
.messagebox-title - 消息框标题。
.messagebox-content - 消息框内容样式。
.messagebox-bottom - 消息框底部文字样式。
2.11 细节样式
.code - 代码框样式。
.quote - 引用框整体框架。
.quote-title - 引用框标题文字样式。
.quote-content - 引用框内容样式。
2.12 底部框架
#footer - 底部总框架。
#innerFooter - 底部内嵌框架。

第四部分 风格所需图片

以下介绍位于 $template['images'] 所在位置(参考第一部分)的图片名称和作用:

      detail.gif - 查看用户列表时,点击查看用户资料的图标(默认:一个小人)
      download.gif - 使用[ file ]下载UBB标签后,文件下载框中的图标(默认:一个磁盘)
      email.gif - 评论和留言中,点击给他/她发邮件的图标(默认:一个信封)
      folder.gif - 展开/折叠被折叠的置顶日志的图标(默认:两个向下的箭头)
      homepage.gif - 评论和留言中,点击访问他/她的主页的图标(默认:一个外部链接箭头)
      ip.gif - 评论和留言中,点击查看他/她的IP来源的图标(默认:一个放大镜)
      readmore.gif - 查看更多内容(默认:多页纸重叠)
      real.gif - Real文件播放框内的图标(默认:RealOne的图标)
      rss.png - 侧边栏分类名称旁的RSS链接所用图标(默认:写有rss字样的方框)
      swf.gif - Flash文件播放框内的图标(默认:Flash的图标)
      toolbar_fontsize.gif - 日志阅读工具栏的字体大小提示图标(默认:一个向右的箭头)
      toolbar_next.gif - 日志阅读工具栏的下一篇日志提示图标(默认:一个向下的箭头)
      toolbar_previous.gif - 日志阅读工具栏的上一篇日志提示图标(默认:一个向上的箭头)
      toolbar_rss.gif - 日志阅读工具栏的本文rss链接的图标(默认:写有rss字样的小方框)
      toolbar_save.gif - 日志阅读工具栏的保存本文的图标(默认:一页纸)
      trackback.gif - Trackback条目前的提示图标(默认:一个气泡)
      viewimage.gif - 查看图片前的链接图标(默认:一张照片)
      wmp.gif - Windows Media Player文件播放框内的图标(默认:WMP的图标)

提示:

IE 7.0以前的版本不能正确显示PNG的透明色。在制作 rss.png时需注意。

第五部分 elements.php文件

下面解释elements.php文件的作用和内容。

这个文件里定义了各个部分的html表现代码。之所以设立这样一个文件,是为了满足在仅仅修改css无法达到布局更改时的需求。


这个文件的内容就是一些赋值语句。形式为 $elements[ElementName]=ElementHtmlCode; 。

Element的名称和含意对照如下:

      $elements['header'] 文件开始
      $elements['displayheader'] 顶部
      $elements['mainpage'] 日志页面
      $elements['otherpage'] 其它页面
      $elements['displayside'] 侧边栏
      $elements['displayfooter'] 底部
      $elements['footer'] 文件结束
      $elements['msgbox'] 出错/成功信息提示框
      $elements['sideblock'] 侧栏项目
      $elements['excerpt'] 摘要
      $elements['excerptontop'] 置顶的摘要
      $elements['viewentry'] 查看日志
      $elements['listbody'] 日志列表
      $elements['list'] 日志列表单行
      $elements['comment'] 评论
      $elements['trackback'] 引用
      $elements['form_reply'] 评论发表框
      $elements['endviewentry'] 查看日志的补充
      $elements['entryadditional'] “查看更多”区域
      $elements['login'] 登入表单
      $elements['contentpage'] 内容页
      $elements['taglist'] tags
      $elements['register'] 注册表单
      $elements['normaltable'] 一般表格
      $elements['normaltablewithtitle'] 一般表格(带有表格标题)
      $elements['form_eachline'] 表格一行
      $elements['eachlink'] 链接页(单项)
      $elements['linkdiv'] 链接页(组)
      $elements['tips'] 提示信息的页面

1. 被替换标签以 {开头,以}结束,在模板解析时会被替换为实际的内容。例如,星标的标签为

由于这里的标签很多,时间有限暂不一一讲解,大部分标签都是可以顾名思义的,在制作模板时可以边测试边修改。

2. 不同侧边栏项目的区块可以分别定义。

例如,$elements['sideblock_categories'] 可定义名为 categories 的项目(即分类项目)的html。

形式为 sideblock_itemname 。当一个item显示时,如果有 $elements['sideblock_item'] ,则优先使用此处的定义,否则使用默认($elements['sideblock'])。

第六部分 标签

用{}包含起来的是“标签”,标签可以被解释成具体的html内容。其意义如下:

注1: 标有*号的是2.0.3起新增的标签。

注2: 各个标签在其规定的区域内可直接使用,例如在 $elements['header'] 区域中,{blogkeywords}可直接输出blog关键词。但这些标签不是全局性的,当在 $elements['displayheader'] 中引用时,不会被解释。在Bo-blog 2.0.3以前的版本中,您无法跨区域使用标签,但 2.0.3 版本起,程序提供了一个跨区域引用标签的方法。要使用非本区域中定义的标签,请使用 。例如,在本例中,书写 即可输出blog关键词。

1. $elements[\'header\'] 文件开始

*language - 网页使用的语言代码,如zh-cn(简体中文)、en(英语)
blogdesc - blog描述语
blogkeywords - blog关键词
baseurl - <baseurl>设置
blogname - blog名
csslocation - CSS载入代码
pagetitle - 当前页面标题,如“留言本”
ajax_js - 载入Ajax所需js代码
extraheader - 载入header区域额外代码

2. $elements['displayheader'] 顶部

blogname - blog名
blogdesc - blog描述语
section_head_components - 顶部导航内容(如首页、链接、Tags等),生成的是一组列表(<li>)

3. $elements['mainpage'] 日志页面

ifannouncement - 顶部公告显隐状态(block/none)
topannounce - 顶部公告内容
iftoppage - 顶部分页条显隐状态(block/none)
ifbottompage - 底部分页条显隐状态(block/none)
mainpart - 页面整体内容,由具体的分页面生成
pagebar - 分页条完整内容 (包含当前页面指示、分页选择、上下页选择)
*currentpage - 当前处于第几页
*previouspageurl - 上一页的链接地址
*nextpageurl - 下一页的链接地址
*turningpages - 翻页部分
*totalpages - 总共有几页

4. $elements['otherpage'] 其它页面

mainpart - 页面整体内容,由具体的分页面生成

5. $elements['displayside'] 侧边栏

section_side_components - 侧边栏总内容
*siderbarcounter - 总共显示了几个侧边栏项目

6. $elements['displayfooter'] 底部

mainpart - 底部内容,由程序根据底部模块配置生成

7. $elements['footer'] 文件结束

此部分无任何标签

8. $elements['msgbox'] 出错/成功信息提示框 (废弃)

message - 提示框内显示的信息

9. $elements['sideblock'] 单一侧栏项目
<pre>
id - 该侧边栏项目的识别名
title - 侧边栏项目的标题
ifextend - 是否展开(block/none)
content - 侧边栏内容

10. $elements['excerpt'] 普通的摘要

entrystar - 星标
entrytitle - 带链接的日志标题
*baseurl - 不带链接的日志标题
*entryrelurl - 日志链接URL(相对链接)
*entryabsurl - 日志链接URL(绝对链接)
entryicon - 天气
entrydate - 完整的日志发布日期 (年/月/日)
*entrydatey - 日志发布日期之‘年’
*entrydatem - 日志发布日期之‘月’
*entrydated - 日志发布日期之‘日’
entrytime - 日志发布时刻
entryauthor - 日志发布者
entrycontent - 日志内容
iftags - 有无设置tags(block/none)
tags - “Tags”
alltags - 本文的tags
entrycateicon - 所属分类的分类图标
entrycate - 分类名
entrycomment - “评论”(评论数)
*entrycommentnum - 单纯的评论数
entrytb - “引用”(引用数)
*entrytbnum - 单纯的引用数
entryviews - “阅读”(阅读次数)
*entryviewsnum - 单纯的阅读次数
ifadmin - 管理的链接
tbbar - 引用传输的地址显示区域(带地址)
*entrytburl - 引用传输的URL
adminbar - 管理栏
topid - 置顶日志的唯一id
previous - 上一篇日志的链接和标题
next - 下一篇日志的链接和标题
ifedited - 本文最后编辑时间和编辑者(仅打开相关选项时有效)

11. $elements['excerptontop'] 置顶的摘要

此部分支持标签与 $elements['excerpt'] 完全一致

12. $elements['viewentry'] 查看日志

此部分支持标签与 $elements['excerpt'] 完全一致

13. $elements['list'] 日志列表单行

此部分支持标签与 $elements['excerpt'] 完全一致

14. $elements['listbody'] 日志列表

listbody - 列表具体内容

15. $elements['comment'] 评论

replier - 评论人
replieremail - 评论者的email
replierhomepage - 评论者的主页地址
replierip - 评论者的ip
replytime - 评论时间
addadminreply - 添加、修改管理员回复的链接
deladminreply - 移除管理员回复的链接
delreply - 移除此评论的链接
replycontent - 评论内容
ifadminreplied - 管理员是否回复过(block/none)
commentid - 管理员回复id
adminrepliershow - 管理员回复的回复者名字、时间
adminreplycontent - 管理员回复的内容
commentid - 此评论的唯一id
adminreplybody - 管理员评论输入框

16. $elements['trackback'] 引用

tbtitle - 引用的标题
tbtime - 引用传送时间
delreply - 删除此引用
tburl - 引用来源URL
tbblogname - 引用来源日志名
tbcontent - 引用内容

17. $elements['form_reply'] 评论发表框

jobnow - 当前表单动作
formtitle - 表单标题
emots - 表情框
disable_html - html可用状态
disable_ubb - ubb可用状态
disable_emot - 表情可用状态
if_neednopsw_begin - 是否显示密码输入框(<!--)
replier - 当前的评论者名称
disable_replier - 评论者名称输入框可用状态
password - 当前的评论者密码
disable_password - 评论者密码输入框可用状态
repurl - 评论者网站地址
repemail - 评论者邮件地址
if_neednopsw_end - 是否显示密码输入框(-->)
additional - 额外js
ubbcode - UBB工具条
if_securitycode_begin - 是否显示验证码(<!--)
rand - 随机数,只起到强制浏览器更新验证码的作用,非验证码本身
if_securitycode_end - 是否显示验证码(-->)
hidden_areas - 表单隐藏数据

18. $elements['endviewentry'] 查看日志的补充

innerpages - 该日志的内部分页
form_reply - 该日志的评论区域

19. $elements['entryadditional'] “查看更多”区域

readmore - “查看更多”

20. $elements['login'] 登入表单 (2.0.3废弃)

lvstart - 是否显示验证码(<!--)
lvend - 是否显示验证码(-->)
rand - 随机数,只起到强制浏览器更新验证码的作用,非验证码本身

21. $elements['contentpage'] 内容页

title - 该页标题
contentbody - 该页内容

22. $elements['taglist'] tags

tagcategory - tag页的标题
tagcontent - tag页的内容
tagextra - tag页的额外说明

23. $elements['register'] 注册表单 (2.0.3的登入表单合并入此)

job - 当前表单动作
title - 当前表单标题
registerbody - 表单整体内容

24. $elements['normaltable'] 一般表格

tablebody - 表格内容

25. $elements['normaltablewithtitle'] 带有标题的一般表格

title - 标题
tablebody - 表格内容

26. $elements['form_eachline'] 表格一行

text - 副标题列
formelement - 内容列

27. $elements['eachlink'] 链接页(单项)

logo - 链接logo
title - 链接网站名
desc - 链接描述

28. $elements['linkdiv'] 链接页(组)

title - 链接组名
tablebody - 链接组内容

29. $elements['tips'] 提示信息的页面

*language - 网页使用的语言代码,如zh-cn(简体中文)、en(英语)
blogdesc - blog描述语
blogname - blog名
csslocation - CSS载入代码
title - 信息框标题
tips - 信息主体内容
admin_plus - 管理员特有的链接 

Bo-Blog使用手册导航

Bo-Blog安装

Bo-Blog安装环境 | Bo-Blog文件目录结构 | Bo-Blog详细安装

Bo-Blog模板

模板的设计与制作 | 模板的安装与移除

Bo-Blog插件

Bo-Blog插件 |插件安装卸载 | 插件模块的添加配置

Bo-Blog版本升级

升级注意事项 | Bo-Blog2.0.3过渡到2.1.0

Bo-Blog数据

数据库备份 | 常用SQL语句

Bo-BlogFAQ

使用注意事项 | 安装常见问题 | 日常使用解答 | URL的优化问答 | UTF-8 BOM的问题

Bo-BlogF其他

关于OpenID | 关于Robots