Hi 您目前尚未登陆
请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

上官雨伦

2006年接触 Discuz。原 New.Discuz! Support Team 开发团队负责人,致力于网页前端设计。现职河北省张家口市职业技术学院教师。

Discuz 高级教程 - 主题内容页独立主题和回复 heatlevel

2017-12-08 16:45:37 发布

Discuz /[教程] 1022 0 0

上官雨伦Writer

张家口市 | 博主、教师

90

主题

99

帖子

99

积分

Admin

Rank: 16

积分
99
发表于 2017-12-8 16:45 | 显示全部楼层 |阅读模式 [离线请留言]
    按照惯例先来解读一下逻辑。
    主题内容页所涉及到的模板文件为:viewthread.htm。通过分析,我们发现 viewthread.htm 只是主题内容页的一个整体框架。
    因为主题内容和回复内容的结构框架一样,所以当布局到内容(包括主题和回复)的时候。便用了
  1. <!--{loop $postlist $post}-->
  2.                 <!--{if $rushreply && $_GET['checkrush'] && $post['rewardfloor'] != 1}-->
  3.                         <!--{eval continue;}-->
  4.                 <!--{/if}-->
  5.                 <div id="post_$post[pid]" {if $_G['blockedpids'] && $post['inblacklist']}style="display:none;"{/if}>
  6.                         <!--{subtemplate forum/viewthread_node}-->
  7.                 </div>
  8.                 <!--{eval $postcount++;}-->
  9. <!--{/loop}-->
复制代码
所以接下来,我们只需要分析 viewthread_node.htm 即可。
viewthread_node.htm 就是无数个显示在主题内容页的楼层(1楼、2楼、3楼、4楼,用的都是这一个模板)。
这里我们暂时管它叫做table框架。(因为这里主要的就是一个 <table> 结构)

既然我们要做主题部分和回复部分的脱离,那我们只需要针对 viewthread_node.htm 这个模板做一个判断即可。
逻辑是这样的,首先在 viewthread_node.htm 的
<table id="pid$post[pid]" class="plhin" summary="pid$post[pid]" cellspacing="0" cellpadding="0">

标签之上做一个判断
  1. <!--{if $post['first']}-->
复制代码
来判断以下内容是楼主。其次在</table>的下面继续判断
  1. <!--{else}-->
  2.    在这里,再把table框架复制一份放在这里
  3. <!--{/if}-->
复制代码
这样,就实现了主题内容和回复内容脱离的目的。需要注意的是,在else下面放入的是将被无限循环的回复内容。也就是说我们可以任意修改这里的框架结构来实现于主题内容不一样的效果。

0 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

当前话题还没有评论,来做第一个评论的人吧 ♪(^∇^*)