搜档网
当前位置:搜档网 › discuz模板制作彷站教程

discuz模板制作彷站教程

discuz模板制作彷站教程
discuz模板制作彷站教程

接触Discuz!有一段时间了,使用的风格都是别人的免费品。一来自己的美工水平实在不行,二来网上很少有比较完整的模板制作教程。因为工作的需要,现特写了一份模板的制作教程。小弟才疏学浅,不对之处还请指正。

模板制作前请将你的界面设计好,并制作成html+CSS 的格式。这里我就

以大魔王的“蓝色经典”作为样版(知识共享,希望大魔王不要介意,如有侵权,请及时通知我)。效果图如下:

(图1)

在开始前,先了介绍一下discuz!的几个模板文件:1、header.htm --------------------------------------页面头部2、discus.htm---------------------------------------------------------------论坛首页3、footer.htm---------------------------------------------------------------页面底部4、viewthread--------------------------------------------------------------查看帖子内容

discuz!论坛的页面通常是几个模板文件共同作用下达到的效果,如图1就是header.htm+discus.htm+footer.htm 这三个文件共同作用的效果。Heaer.htm

对应的是:

(图2)

w w

w

.a i

w a n

s h

a .c o m

Footer.htm

对应的是:

(图3)

剩下的就是discuz.htm 文件显示的了。

当然你要将首页显示的效果就制作成一个文件模板也是可以的,这里之所以分开,是因为header.htm 和footer.hmt 文件通常还会被其它的模版文件引用。也就是说,其它的页面(比如发贴的页面)的头部、底部与首页的头部、底部完全一样,分开来写就可以达到重复利用,减少劳动的效果。下面我们就开始制作:

首先,现在我要制作的这套模板叫test,那么我就在templates 目录下建立一个test 目录。在test 目录下再新建一个images 文件夹用于存放这套模板的图片,把切好的所有图片保存到这个文件夹中。templates/test 文件夹用于存放这套模板的htm 文件,在这个目录中新建三个文件header.htm、discuz.htm、footer.htm,打开你设计好的主页html 文件,将你想作为头部的那一段代码复制粘贴到header.htm 文件中,

相应的将作为底部的那一段代码复制粘贴到footer.htm 文件中,其余的代码复制粘贴到discuz.htm 文件中。

最后在discuz.htm 文件的最顶部和最底部分别加上:{subtemplate header}和{subtemplate footer}

这两句算是discuz 的语言,意思是将header.htm 和footer.htm 文件包含进来,这样就构成了一个完整的主页面了。接下来的工作要在论坛后台设置中来完成(1)进入论坛点击“系统设置——>界面——>模板管理”,在新增模板后填入模板名称,模板文件所在目录,板权信息然后提交即可!如图

4:

(图4)

(2)在“界面——>风格管理”中,在新增界面风格后填入方案名称“test”然后提交即可!(3)提交方案名称后,您就可以在界面风格中看到您所定义的新的风格方案。如下图:

w w

w

.a i

w a n

s h

a .c o m

(图5)

注意上面用红色圆圈圈起来的那幅模版预览图,你的是不是没有显示出来?这需要将你的首页的效果图做成110x120并命名为preview.jpg,将这图片放到test 目录下就可以了。到此,一套新的风格模板方案就添加到模板库里了,但还不是我们需要的最终效果,接下来要对模板文件继续进行调整,以达到想要的最终效果(4)点击[编辑]后就可以进入该模板的风格配色方案的编辑页面,按照图6把各个对应参数填入相应位置。

(图6)

填写好后,点击“提交”,更新一下缓存,浏览论坛首页出现下图:

w w

w

.a i

w a n

s h

a .c o m

(图7)

呵呵,有内容出来了,可是排版上却变得乱七八糟了,这是因为还没有引入CSS 文件。这时将原来设计好的CSS 文件放到你模板目录下(templates/test),并将它重命名为“css_append.htm”(注意:改后的文件名是css_append,后缀名是htm)。接着打开header.htm 文件,找到你引入CSS 文件的语句,这会因为引入的语句不同而不同,我这里是将这个替换为:$rsshead $extrahead

{subtemplate css_script}

这样就可以将你的CSS 文件引入了。进入后台更新一下缓存,现在的效果图如下:

(图8)

这样就整齐了许多,这时你是不是发觉少了点东西?没错,图片没有显视出来。下面我们先将背景图(也就是CSS 文件中引入的图片)显示出来。打开css_append.htm 文件,找到所有你引入图片的地方,将路径替换为

w w

w

.a

i

w a n

s h

a .c o m

“{STYLEIMGDIR}”。例如:这里有一句:

#footer{padding:1em 0;background:url(images/footer_bg.gif)}将它改为:

#footer{padding:1em 0;background:url({STYLEIMGDIR}/footer_bg.gif)repeat-x top;}

{STYLEIMGDIR}实际上是discuz 的一个变量,当模板被解释时,就会用一个值来替换这个变量,这个变量的值可以在后台设置。进入后台后点击“界面——>风格管理”出现下图:

(图9)

找到你正在制作的test 风格,点击“编辑”按钮,出现下图:

(图10)

看到了吧,当模板被解释时,就会用上面所填的路径来替换这个变量。好了,现在更新缓存再看一下效果:

w w

w

.a i

w a n

s h

a .c o m

(图11)

哈哈,和原来设计的效果图一样了,是否有一种成功的喜悦?虽然,到这里已经迈出了成功的一步,但革命尚未成功,同志仍需努力!现在制作的模版是静态的,也就是说就算你发贴了,里面的内容也不会改变的,甚至你点个连接都会出错的。

下面我们就来让它“动”起来。一、修改头部文件header.htm 1、打开正在制作的模板header.htm 文件(以下简称

header.htm),以及默认模板templates\default 的header.htm 文件(以下简称“默认header.htm”)。2、将header.htm 文件的标题用$navtitle $bbname $seotitle 来代替。例如:我这里是:“搜球论坛”改后就变成了“$navtitle $bbname $seotitle ”3、看header.htm 里是否有类似“

content=""/>”这样的语句,有就删除。然后,将默认header.htm 里的以下语句:

复制粘贴到header.htm 文件相应的位置(注这些对界面没什么影响,但对SEO 优化有帮助)4、将默认header.htm 里的以下语句:

复制粘贴到header.htm 文件相应的位置(至于这些有什么作用,自己查一下吧)5、将头部的logo“动”起来

(图12)

找到显示logo 的地方,我这里是:

将“index.php”和“搜球论坛”分别用$indexname 和$bbname 代替

($indexname 是首页文件名的变量,$bbname 是论坛名称变量,其它相同的地方都可以用这两个变量作替换,以增加模版的适应性。)6、让登陆状态“动”起来

(图13)

上面是我设计的效果图和相应的代码,这是登陆时的显示状态,当然我还希望没

登陆的时候这样显示:

(图14)

在默认header.htm 文件中找到:

class="noborder">$discuz_userss{lang login_invisible_mode}

href="member.php?action=switchstatus"title="{lang login_switch_invisible_mode}">{lang

login_normal_mode}

class="pipe">|

href="my.php?item=threads{if $forum}&srchfid=$forum[fid]{/if}">{lang my_posts}

href="{$uchomeurl}/space.php?uid=$discuz_uid"target="_blank">{lang space_short}

href="{$xspaceurl}/?uid-$discuz_uid"target="_blank">{lang space_short}

href="pm.php"id="pm_ntc"

w w

w

.a i

w a n

s h

a .c o m

class="new"title="{lang pm_new}"target="_blank">{lang pm}($_DCOOKIE[pmnum])

id="task_ntc"{if $doingtask}href="task.php?item=doing"class="new"title="{lang task_unfinish}"{else}href="task.php"{/if}target="_blank">{lang task}

class="pipe">|

href="memcp.php">{lang user_center}

{lang modcp}

{lang admincp}

href="logging.php?action=logout&formhash={FORMHASH}">{lang logout}

id="loginuser"class="noborder">$_DCOOKIE['loginuser']

href="logging.php?action=login">{lang activation}

href="logging.php?action=logout&formhash={FORMHASH}">{lang logout}

href="$regname"class="noborder">$reglinkname

href="logging.php?action=login">{lang login}

用这一段代码替换上面红色黑体部份,并在

  • 的后面加上这一句:

    还是那句话,想知到上面代码具体的意思,只能你自己去查找,我不可能一个一

    w w

    w

    .a i

    w a n

    s h

    a .c o m

    个的来解释。7、

    让菜单“动”起来

    (图15)

    在默认header.htm 文件中找到:

    • $nav[nav]

    • $module[url]
    • $nav[nav]

      {eval $mnid =$BASEFILENAME;}

      w w

      w

      .a i

      w a n

      s h

      a .c o m

      -{if $navmng[0]==array_intersect_assoc($navmng[0],$_GET)}-->{eval $mnid =$navmng[1];}

用这一段代码替换上面红色黑体部份,这样就实现了菜单的调用。到此整个头部header.htm 文件模板就制作好了。

二、制作首页主体部分

同样打开正在制作的模板discuz.htm 文件(以下简称discuz.htm),以及默认模板templates\default 的discuz.htm 文件(以下简称“默认discuz.htm”)1、

导航条

(图16)

w

w

w

.a i

w a n

s h

a .c o m

搜球论坛»首页
“搜球论坛”和“首页”分别用“$bbname”和“{lang home}”代替。2、版块列表

(图17)

小叶

src="images/default/collapsed_no.gif"title="收起/展开"alt="收起/展开"/>

新手指南

cellspacing="0"cellpadding="0"style="">

class="forumnums">2/2

class="left">

href="forumdisplay.php?fid=15">新手指南

版主:

yysh

w w

w

.a i

w a n

s h

a .c o m

href="redirect.php?tid=2&goto=lastpost#lastpost">我是新手

href="space.php?username=yysh">yysh-2009-6-2517:03

上面只列出了“新手指南”区块的代码,其它区块雷同就不再列出了。

在默认discuz.htm 文件中找到下面这段代码:(绿色字体是我添加的注释)//循环

{lang forum_category_modedby}:$cat[moderators]//如果有分区版主则显示

src="{IMGDIR}/$cat[collapseimg]"title="{lang spread}"alt="{lang spread}"/>

//分区版块的收缩与展开

$cat[name]

//分区名称

"$collapse['category_'.$cat[fid]]">//这里有几个变量,简单来说是用于后台控制的,不用细究

//如果下级子版块横排数为0则按下面版式来显示版块列表,横排数可在后台设置的

//循环语句,循环次数为此分区的子块版块数

//循环显示版块列表结束

//如果下级子版块横排数不为0则按下面版式来显示版块列表,下面就不注悉了,基体和上面是一样的,只是显示的方式不同而已

$cat['endrows']

$forum[icon]//版块图标

$forum[redirect]}target="_blank"{/if}>

$forum[name]//版块转向URL ,$forum[name]版块名称

({lang index_today}:$forum[todayposts])//如果今日发贴数不为0则显示

w w

w

.a i

w a n

s h

a .c o m

$forum[description]

//版块简介

{lang forum_subforums}:$forum['subforums']

//是否显示子版块

//如果版主不为空

//版主以平面方式显示

{lang forum_moderators}:$forum[moderators]

//否则版主以下拉菜单方式显示{lang forum_moderators}

N/A

$forum[threads]/$forum[posts]//$forum[threads]主题数,$forum[posts]总发贴数

//是否为私密版块

{lang private_forum}

{lang

url_link}

//显示最后发贴的信息

href="redirect.php?tid=$forum[lastpost][tid]&goto=lastpost#lastpost">{echo cutstr($forum[lastpost][subject],30)}

$forum['lastpost']['author']{lang anonymous}

-$forum[lastpost][dateline]

w w

w

.a i

w a n

s h

a .c o m

{lang never}//从未发贴

href="forumdisplay.php?fid=$forum[fid]"{if $forum[redirect]}target="_blank"{/if}>$forum[name]

({lang index_today}:$forum[todayposts])

{lang forum_threads}:$forum[threads],

{lang forum_posts}:$forum[posts]

{lang private_forum}

{lang forum_lastpost}:

href="redirect.php?tid=$forum[lastpost][tid]&goto=lastpost#lastpost"title=

"{echo cutstr($forum[lastpost][subject],30)}{lang forum_lastpost_by}{if $forum['lastpost']['author']}$forum['lastpost']['authorusername']{else}{lang anonymous}{/if}">$forum[lastpost][dateline]

w

w

w

.a i

w a n

s h

a .c o m

{l

ang never}

{lang url_link}

//下面是关于广告的一些代码,不是重点,这里就不细究了

上面这段代码便可以罗列出区块和版块,但该如何加入到我们制作的模块中呢?首先将你设计的显示版块列表的那些代码全部清空,然后将上面这段添加到相应的位置。这样就可以将版块列表显示出来了,但很有可能显示的内容是乱七八糟的。这是因为,你加入这段代码的CSS 类名和你原来的不一样了,这就需要你在css_append.htm 文件里重新定义CSS,以达到你想要的效果。当然你可以发现上面这段代码有些地方使用变量来作为CSS 类名了,这是为了能够在后台控制显示的样式。为了简单,这里暂不细究,你只要将这些重新命名,在css_append.htm 文件里定义就行了。

w w

w

.a i

w a n

s h

a .c o m

3、

友情链接和在线会员

(图18)

显示这两块的实现代码也不少,这里不再列出来分析了,因为如果你能将上面的版块列表弄明白,这两块也就自然自知怎样处理了。

4、数据调用

数据调用就不能像之前那样简单地从默认模版那里拷贝、粘贴就可以了。这需要利用后台才行。在开始之前先看一下,我们要实现的效果

(图19)

这里显示的内容是调用了“我的助手”(“我的助手”属于模块脚本,而模块脚本为数据调用模块的一种扩展,适用于懂得书写PHP 程序的程序员)。登陆后台“工具数据调用模块脚本”,这里显示了所在的模块脚本。点击“我的助手”后面的“添加”出现下图,

w w

w

.a i

w a n

s h

a .c o m

(图20)

“模块名称”为必填项,其它的可以不填。点击“预览”按钮,出现下图:

(图21)

将“{eval request('小叶_我的助手');}”这句拷贝下来,并按“提交”按钮;接着用“{eval request('小叶_我的助手');}”这句替换相应的代码。更新一下缓存再浏览主页,这时会发现,显示的内容和格式与想要的结果不一样。这是因为模块脚本也用它自己的模版,像“我的助手”的模块脚本为

“include/request/assistant.inc.php”文件,如果当前模版文件夹中有

w w

w

.a i

w a n

s h

a .c o m

request_assistant.htm 文件,则“我的助手”使用当前的

request_assistant.htm 文件作为模版,否则使用默认模版文件夹

“templates/default/”目录下的request_assistant.htm 文件作为模版。所以,如果你要实现你自己想要的形式就要将默认模版文件夹

“templates/default/”目录下的request_assistant.htm 文件复制到当前模版文件夹中,并作相应的修改才行。如果要图10的效果,可以参考大魔王的“蓝色经典”模版中的request_assistant.htm 文件,值得注意的是,这个的CSS 样式同样要在css_append.htm 文件中定义。

下面教大家另一种非模块脚本数据调用,这种调用包括:主题列表、版块列表、主题附件等等。很多人喜欢在首页将贴中的图片以幻灯片的形式来显示,这属于主题附件调用,下面就以这种调用来演示非模块脚本的数据调用。先看一下,要实现的效果:

(图22)

将你设计的显示图片幻灯片的javascript 文件(我这里是photo_show.js)拷贝到当前制作的模版文件夹下。

登陆后台“工具数据调用添加主题附件”,将下面的代码填到图中所示的地方