请首先浏览:
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 -->复制代码
对应的部分如下图所示:
我们以“热门专辑”为例,简单说明 SupeV 模板里的代码:<!--热门专辑-->
{block "portal_special_hot"}
<!--热门专辑 end-->复制代码
这里的三行代码:一行代码+两个注释,代表的是:
或许大家会奇怪,仅仅 {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 -->复制代码
对应的部分如下图所示:
类似 {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 编辑 ]