织梦有个问答模块,但是没用过 也没想着尝试去了解,那就用自己相对比较熟悉的栏目来做吧,且看我是如何做的

1、新建问答模板

问答模块跟文章发布是不一样的,所以不能跟文章一样都用普通的文档模板,新建一个自己的模板吧,在 核心——内容模型 管理 中新增一个模型,可以自己手动添加 也可以暂时拷贝我这里的规则,可以直接导入使用的

<channel:id>-9</channel:id>
<channel:nid>ch17</channel:nid>
<channel:typename>问答模块</channel:typename>
<channel:maintable>#@__archives</channel:maintable>
<channel:addtable>#@__addon_ask</channel:addtable>
<channel:addcon>archives_sg_add.php</channel:addcon>
<channel:mancon>content_sg_list.php</channel:mancon>
<channel:editcon>archives_sg_edit.php</channel:editcon>
<channel:useraddcon>archives_sg_add.php</channel:useraddcon>
<channel:usermancon>content_sg_list.php</channel:usermancon>
<channel:usereditcon>archives_sg_edit.php</channel:usereditcon>
<channel:fieldset>
<field:channel itemname="频道id" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="10" page=""></field:channel>
<field:arcrank itemname="浏览权限" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="5" page=""></field:arcrank>
<field:mid itemname="会员id" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="8" page=""></field:mid>
<field:click itemname="点击" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="10" page=""></field:click>
<field:title itemname="标题" autofield="0" notsend="0" type="text" isnull="true" islist="1" default="0"  maxlength="60" page=""></field:title>
<field:senddate itemname="发布时间" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="10" page=""></field:senddate>
<field:flag itemname="推荐属性" autofield="0" notsend="0" type="checkbox" isnull="true" islist="1" default="0"  maxlength="10" page=""></field:flag>
<field:litpic itemname="缩略图" autofield="0" notsend="0" type="text" isnull="true" islist="0" default=""  maxlength="60" page=""></field:litpic>
<field:userip itemname="会员IP" autofield="0" notsend="0" type="text" isnull="true" islist="0" default="0"  maxlength="15" page=""></field:userip>
<field:lastpost itemname="最后评论时间" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="10" page=""></field:lastpost>
<field:scores itemname="评论积分" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="8" page=""></field:scores>
<field:goodpost itemname="好评数" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="8" page=""></field:goodpost>
<field:badpost itemname="差评数" autofield="0" notsend="0" type="int" isnull="true" islist="1" default="0"  maxlength="8" page=""></field:badpost>

<field:aname itemname="提问者" autofield="1" notsend="0" type="text" isnull="true" islist="0" default=""  maxlength="250" page="">
</field:aname>

<field:afenlei itemname="问题分类" autofield="1" notsend="0" type="select" isnull="true" islist="0" default="妇科炎症,宫颈疾病,计划生育,不孕不育,内分泌科,私密整形,乳腺疾病,妇科肿瘤"  maxlength="250" page="">
</field:afenlei>

<field:ades itemname="问题详细" autofield="1" notsend="0" type="multitext" isnull="true" islist="0" default=""  maxlength="250" page="">
</field:ades>

<field:atell itemname="联系方式" autofield="1" notsend="0" type="text" isnull="true" islist="0" default=""  maxlength="250" page="">
</field:atell>

<field:astatus itemname="回复/审核状态" autofield="1" notsend="0" type="select" isnull="true" islist="0" default="未回复,已回复"  maxlength="250" page="">
</field:astatus>


<field:adoctor itemname="回复医生" autofield="1" notsend="0" type="select" isnull="true" islist="0" default="刘医生,李医生,王医生"  maxlength="250" page="">
</field:adoctor>


<field:atime2 itemname="回复时间" autofield="1" notsend="0" type="datetime" isnull="true" islist="0" default=""  maxlength="250" page="">
</field:atime2>

<field:acontent itemname="回复内容" autofield="1" notsend="0" type="htmltext" isnull="true" islist="0" default=""  maxlength="256" page="">
</field:acontent>

</channel:fieldset>
<channel:listfields>channel,arcrank,mid,click,title,senddate,flag,lastpost,scores,goodpost,badpost</channel:listfields>
<channel:allfields></channel:allfields>
<channel:issystem>-1</channel:issystem>
<channel:isshow>1</channel:isshow>
<channel:issend>0</channel:issend>
<channel:arcsta>-1</channel:arcsta>
<channel:usertype></channel:usertype>
<channel:sendrank>0</channel:sendrank>
<channel:isdefault>0</channel:isdefault>
<channel:needdes>1</channel:needdes>
<channel:needpic>1</channel:needpic>
<channel:titlename>标题</channel:titlename>
<channel:onlyone>0</channel:onlyone>
<channel:dfcid>0</channel:dfcid>


不知道是什么原因,新建频道的时候是9 结果导出规则的时候变成-9了,好吧 那就-9吧  尝试过修改  但是失败了 导致整个频道不可用,没办法 删除了再来过。

2、新增一个问答栏目,添加一篇问答

跟普通的栏目添加方式一样,新增一个栏目  不同的是内容模型我们选择是问答模型而不是普通文章,新增好了之后  进入该栏目 然后 添加一篇文章  你会发现这个时候跟你普通的栏目添加文章显示出来的是不一样的 是下图这个样子

ok 按要求添加就是了,注意 回复/审核状态 这里  这个是控制我们的问答是否展示出来的关键。

3、前台调用方法

在栏目属性中找到对应的列表模板文件名跟文档模板文件名  然后新建这样两个模板  为了方便测试 看看我的

A、列表模板

{dede:sql sql="select * from dede_addon_ask where channel='-9' and astatus='未回复' limit 0,15"}
<p>
[field:title/]
[field:ades/]
[field:adoctor/]
[field:atime2 function='strftime("%Y-%m-%d %H:%M",@me)'/]
[field:acontent/] </p> {/dede:sql}

B、文档模板

<style type="text/css">
.blue,.red,.black,.green{padding:5px 10px; overflow:hidden;margin-bottom:6px;font-size:14px;}
.blue{border:1px solid blue;}
.red{border:1px solid red;}
.black{border:1px solid black;}
.green{border:1px solid green;}
p{line-height:24px;margin:0;padding:0}

.vi0{display:none;}/*通过系统标签获取审核状态 可以控制其是否在页面上显示(不包括源代码)/
.vi1{}
</style>

<div class="blue">
<p>
标题:{dede:field.title/}
分类:{dede:field.afenlei/}
详细:{dede:field.ades/}
提问者:{dede:field.aname/}
联系方式:{dede:field.atell/}
提问时间:{dede:field.senddate function='GetDateTimeMK(@me)'/} </p> </div> <div class="black"> 回复状态:{dede:field.astatus/} (vi{dede:field.astatus runphp='yes'}@me=@me=='未回复'?'0':'1';{/dede:field.astatus}) </div> <div class="red" id="huifu"> <!--可以将上面的vi0/vi1跟这里的red放在一起--> <p> 回复医生:{dede:field.adoctor/}
回复时间:{dede:field.atime2 function='strftime("%Y-%m-%d %H:%M",@me)'/}
回复内容:{dede:field name='array' runphp='yes'}@me=@me['astatus']=="未回复"?"<span style='color:#666;font-weight:bold'>该问答尚未通过审核,暂不予展示</span>":@me['acontent'];{/dede:field} </p> </div>

*重点是文档中 处理只显示回复过了的问答,这上面用到了几个runphp='yes'  大家仔细研究下  会有不小收获的, 可以通过这个方法控制某个东西在样式上 是否display:none  也可以直接像上面这样不在源码中展示。

最后上两个图看一下吧


未审核问答


已审核问答