织梦有个问答模块,但是没用过 也没想着尝试去了解,那就用自己相对比较熟悉的栏目来做吧,且看我是如何做的
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 也可以直接像上面这样不在源码中展示。
最后上两个图看一下吧
未审核问答
已审核问答