插件作者的标准出来了!Manyou诚邀开发者加盟!
“互联网平台开发者”特刊 有奖征集开发者
立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0 使用说明
Discuz!NT2.5正式版发布
开放源码下载
UCenter Home 1.2 正式版发布
官方站 | 帮助文档
基于ECShop的网店托管-卖否
北京PHP就业培训热招 | LAMP培训大连
Discuz!收费服务内容及价格
《站长》杂志读者调查表
Discuz!/ECShop 专用官方虚拟主机
Yes玩·快速建立联盟帮助
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
《站长》第七期:2008SNS进行时
返回列表 发新话题

SupeV 模板教程(二)

请首先浏览:SupeV 模板教程(一)


以首页为例子,讲解模板代码结构

打开 theme\zh-cn\tpl\index.php 文件,即 SupeV 站点首页的模板文件。

1、{template header}

这一句,是调用头部模板的代码,即调用 header.php 文件。

2、
<div class="col1">
                <h1>热点推荐</h1>
                <div class="hot_commend">
                        <dl>
                                {block "portal_video_troll"}
                                {block "portal_video_views"}
                        </dl>
                </div>
                <!--热点推荐 end-->
                <!--热门专辑-->
                        {block "portal_special_hot"}
                <!--热门专辑 end-->

                <!--最佳原创-->
                        {block "portal_videos_orig"}
                <!--最佳原创 end-->

                <!--大家顶上来的节目-->
                        {block "portal_videos_pushs"}
                <!--大家顶上来的节目 end-->

                <!--分类信息-->
                        {block "portal_videos_cats"}
                <!--分类一 end-->

        </div>
        <!--col1 end -->
复制代码
对应的部分如下图所示:

1.jpg
2008-4-23 14:51


我们以“热门专辑”为例,简单说明 SupeV 模板里的代码:
<!--热门专辑-->
                        {block "portal_special_hot"}
<!--热门专辑 end-->
复制代码
这里的三行代码:一行代码+两个注释,代表的是:

2.jpg
2008-4-23 14:51


或许大家会奇怪,仅仅 {block "portal_special_hot"} 一段代码,就可以显示“热门专辑”这一块。其实 {block "portal_special_hot"} 这段代码是 SupeV 后台的模块代码,即JS代码。请大家到 SupeV 后台,点击“模块管理”的“浏览模块”,然后搜索“portal_special_hot”。请点击 portal_special_hot 模块,找到这个模块的模板,大家可以看到这个模块代表的模板代码是:
<div class="modulebg">
        <div class="module_title">
                <h2>热门专辑</h2>
                <em>
                <ul>
                        <!--{if !empty($block[tags])}-->
                                <!--{loop $block[tags] $k $v}--><!--{if empty($k)}--><li style="background:none;"><!--{else}--><li><!--{/if}--><a href="./tag.php?stype={STYPE_SPECIAL}&keywords=<!--{eval echo rawurlencode($v);}-->">$v</a></li><!--{/loop}-->
                        <!--{/if}-->
                </ul>
                </em>
        </div>
        <ul class="video_list video_album">
                        <!--{if empty($block['data'])}-->
                                <p class="info">没有信息</p>
                        <!--{else}-->
                                <!--{loop $block['data'] $row}-->
                                <li>
                                        <div class="album_pic"><a href="./special.php?spid=$row[spid]"><img src="$row[thumb]" alt="$row[subject]" title="$row[subject]" onerror="this.src='{SPNOTHUMB}';"/></a></div>
                                        <h4><a href="./special.php?spid=$row[spid]" title="$row[subject]">$row[subject]</a></h4>
                                        <span>视频: $row[videos]</span> <span>播放: $row[views]</span>
                                </li>
                                <!--{/loop}-->
                        <!--{/if}-->
        </ul>
        <div class="clear"></div>
</div>
复制代码
至于中间如何将 {block "portal_special_hot"} 转变为一大段的代码,大家可以不必在意,这个都是使用 PHP 处理的。

3、
<div class="col2">
                <div class="modulebg memberzone_bg">
                        <div class="memberzone">
                                <script>
                                        <!--{if empty($member[mid])}-->
                                                dw('<h3>会员登录</h3><form action="./login.php?action=login" method="post"><fieldset><legend>用户名与密码</legend><p class="p1"><label>用户名:</label><input class="input_loginbox" name="username" type="text" size="12" maxlength="30" /></p><p class="p1"><label>密   码:</label><input class="input_loginbox" name="userpass" type="password" size="12" maxlength="30" /></p><p class="p1"></fieldset><fieldset><legend>登录与注册</legend><p class="p2"><input   type="checkbox" name="cookietime" value="315360000" $cookietimecheck[315360000] />保存状态              <input class="input_loginsubmit" type="submit" value="登录" id="submit" name="loginsubmit" /></p>');
                                        <!--{else}-->
                                                dw('<h3>用户中心</h3><div class="mz_hellow"><a href="./vspace.php?mid=$member[mid]"><img src="./avatar.php?uid=$member[mid]&size=middle" onerror="this.src=\'{MEMBERNOAVATAR}\'" alt="$member[username]" /></a><p><a href="./vspace.php?mid=$member[mid]">$member[username]</a></p></p></div><ul class="mz_tools"><li><a href="./vspacecp.php?script=video&action=upload" class="mz_t1">上传视频</a></li><li><a href="./vspacecp.php?script=video&action=list" class="mz_t2">我的视频</a></li><li><a href="./vspacecp.php" class="mz_t3">管理中心</a></li><li><a href="./vspace.php?mid=$member[mid]" class="mz_t4">个人空间</a></li></ul><div class="clear"></div>');
                                        <!--{/if}-->
                                </script>

                        </div>
                </div>

                <div class="modulebg top10">
                        <h3>节目排行榜</h3>
                        <div id="top10_program_title">
                                <ul>
                                        <li><a class="curmenu" target="_blank" onclick="secBoard('top10_program_title','program_list',1)"/><span>今日十大节目</span></a></li>
                                        <li><a class="ocurmenu" target="_blank" onclick="secBoard('top10_program_title','program_list',2)"/><span>昨日十大节目</span></a></li>
                                </ul>
                        </div>
                        <div class="top10_content">
                                <!--今日十大节目-->
                                        {block "portal_videos_today"}
                                <!--今日十大节目 end-->

                                <!--昨日十大节目-->
                                        {block "portal_videos_yestday"}
                                <!--昨日十大节目 end-->

                        </div>
                </div>
                <!--节目排行榜 end-->

                <div class="modulebg top10">
                        <h3>会员排行榜</h3>
                        <div id="top10_member_title">
                                <ul>
                                        <li><a class="curmenu" target="_blank" onclick="secBoard('top10_member_title','member_list',1)"/><span>最佳人气</span></a></li>
                                        <li><a class="ocurmenu" target="_blank" onclick="secBoard('top10_member_title','member_list',2)"/><span>上传最多</span></a></li>
                                        <li><a class="ocurmenu" target="_blank" onclick="secBoard('top10_member_title','member_list',3)"/><span>积分最高</span></a></li>
                                </ul>
                        </div>
                        <div class="member_content">

                                <!--最佳人气-->
                                        {block "common_member_views"}
                                <!--最佳人气 end-->

                                <!--最多上传-->
                                        {block "common_member_upload"}
                                <!--最多上传 end-->

                                <!--积分最高-->
                                        {block "common_member_credits"}
                                <!--积分最高 end-->

                        </div>
                </div>
                <!--会员排行榜 end-->

                <!--
                <div class="modulebg top10">
                        <div class="module_title">
                                <h2>推荐视频</h2>
                        </div>
                        <div class="top10_content">
                                {block "masterpushs"}
                        </div>
                </div>
                -->
                <!--推荐视频 end-->

                <!--网站动态 start-->
                <!--{if !empty($cache['announcements'])}-->
                <div class="modulebg top10">
                        <div class="module_title">
                                <h2>网站动态</h2>
                                <span class="more"><a href="./announcements.php">查看更多>></a></span></div>
                                <ul class="top10_content">
                                        <!--{loop $cache['announcements'] $row}-->
                                        <li><span class="num top10_num2">$row[rowid]</span><span class="text_clear"><a href="./announcements.php?id=$row[id]#$row[id]" title="$row[subject]">$row['subject']</a></span></li>
                                        <!--{/loop}-->
                                </ul>
                </div>
                <!--{/if}-->
                <!--网站动态 end-->
        </div>
        <!--col2 end -->
复制代码
对应的部分如下图所示:

3.jpg
2008-4-23 14:51


类似 {block "portal_videos_today"} 这样的代码,参考上面的说明,这里不在赘述。

这里说明两个部分:

A、dw(***********),在 SupeV 程序经过特殊处理,代表的是:document.write(***********),document.write 是 JS 代码,将括号里的内容输出到浏览器。

B、secBoard('top10_program_title','program_list',1),secBoard 是带有三个参数的 JS 函数,可以看做 secBoard('1','2',3) :这里要注意,1必须和 secBoard 所在容器的div 的 id 保持统一;2和3必须和 secBoard 要显示的代码的 id 保持相同,例如,今日十大节目的模块代码里:<ul id="program_list_1">,所以 2 这里 要写 program_list ,然后 3 要和模块代码里的后部分保持一致。

4、
{template header}

这一句,是调用尾部模板的代码,即调用 footer.php 文件。

5、介绍 SupeV 模块代码里的代码,如上所述的“热门专辑”,这里的代码是:
<div class="modulebg">
        <div class="module_title">
                <h2>热门专辑</h2>
                <em>
                <ul>
                        <!--{if !empty($block[tags])}-->
                                <!--{loop $block[tags] $k $v}--><!--{if empty($k)}--><li style="background:none;"><!--{else}--><li><!--{/if}--><a href="./tag.php?stype={STYPE_SPECIAL}&keywords=<!--{eval echo rawurlencode($v);}-->">$v</a></li><!--{/loop}-->
                        <!--{/if}-->
                </ul>
                </em>
        </div>
        <ul class="video_list video_album">
                        <!--{if empty($block['data'])}-->
                                <p class="info">没有信息</p>
                        <!--{else}-->
                                <!--{loop $block['data'] $row}-->
                                <li>
                                        <div class="album_pic"><a href="./special.php?spid=$row[spid]"><img src="$row[thumb]" alt="$row[subject]" title="$row[subject]" onerror="this.src='{SPNOTHUMB}';"/></a></div>
                                        <h4><a href="./special.php?spid=$row[spid]" title="$row[subject]">$row[subject]</a></h4>
                                        <span>视频: $row[videos]</span> <span>播放: $row[views]</span>
                                </li>
                                <!--{/loop}-->
                        <!--{/if}-->
        </ul>
        <div class="clear"></div>
</div>
复制代码
这里为大家说明 if 和 loop 的含义和用法:

loop:这个是有头有尾的,它的意思就是在loop中间的部分会进行循环,输出多条数据。

if:这个是一个判断,例如:<!--{if empty($block['data'])}--> ,如果非空的话执行下边的语句,也是有头尾的,复制模块的时候认清if的开头和结尾。

[ 本帖最后由 安笛 于 2008-4-23 16:11 编辑 ]
不错,学习下
正式学习~~
谢谢 一直再找这个
谢谢,楼主辛苦了.
收藏起来了
MARK!!!!
哇酷.,怎么成了这个样子
留脚印,不知道正式版出来后这个还适用不
爸问我为什么背着他学抽烟?我说:“台湾不回归,心情很郁闷!”
{template header}
是调用头部模板的代码,即调用 header.php 文件

很多时候有用到。
返回列表