NO.1
管理员
管理员
  • UID11
  • 粉丝1
  • 关注2
  • 发帖数20
  • 社区居民
阅读:5914回复:0

dedecms调用问答模块(问题和回答)标签

楼主#
更多 发布于:2014-03-06 13:05
分享到:
一、先来看看怎么调用dedecms问题的标签:

  1. {dede:ask row='6' qtype='new' tid='0' titlelen='24'}
      
  2. <</b>dd>
      
  3.    <</b>span class="tclass">[[field:tidname/]]  
  4.    <</b>span class="tlink"><</b>a href="[field:url/]">[field:title/]  
  5. <</b>/dd>
      
  6. {/dede:ask}

具体的参数说明如下:
row='6' 调用条数
 qtype='new' 排序类型 commend 推荐、ok 表示已解决问题、high 高分问题 、new 最新问题
 tid='0' 栏目id,默认是全部
 titlelen='24' 标题长度
 底层模板字段:
 tid,tidname,title,url,typeurl
由此可以引申出一下几个调用标签:推荐问题:
  1. {dede:ask row='8' titlelen='40' sort='expiredtime'}
      
  2.          <</b>dd> <</b>span class="tclass">[{dede:field.typedata /}]</</span>span> <</b>span class="tlink"><</b>a href="question.php?id={dede:field.id /}">{dede:field.title /}</</span>a></</span>span> <</b>/dd>  
  3.          {/dede:ask}
      
  4. 待解决的问题:
      
  5.  {dede:ask row='8' titlelen='40' sort='notok'}
      
  6.        <</b>dd> <</b>span class="tclass">[{dede:field.typedata /}]</</span>span> <</b>span class="tlink"><</b>a href="question.php?id={dede:field.id /}">{dede:field.title /}</</span>a></</span>span> </</span>dd>  
  7.        {/dede:ask}
      
  8. 新解决的问题:
      
  9. {dede:ask row='8' titlelen='40' sort='ok'}
      
  10.        <</b>dd> <</b>span class="tclass">[{dede:field.typedata /}]</</span>span> <</b>span class="tlink"><</b>a href="question.php?id={dede:field.id /}">{dede:field.title /}</</span>a></</span>span> </</span>dd>  
  11.        {/dede:ask}
  12. 高分悬赏问题:
      
  13. {dede:ask row='8' titlelen='40' sort='reward'}
      
  14.        <</b>dd> <</b>span class="tclass">[{dede:field.typedata /}]</</span>span> <</b>span class="tlink"><</span>a href="question.php?id={dede:field.id /}">{dede:field.title /}</</span>a></</span>span> <</b>/dd>  
  15.        {/dede:ask}
     

二、调用一问一答式的标签:
 因为这个一问一答没有dedecms现成的标签,所以要启动dede的一个重要东东{dede:sql}{/dede:sql};可以说dedecms给
二次开发有很大扩展的原因就在于此,很多功能没有做,不是做不了,而是有待开发者去自己创造,数据库一切建好,就等网站的需求了。
 代码如下:
  1. {dede:sql sql="select dede_ask.id,dede_ask.title,dede_askanswer.content from dede_ask LEFT JOIN dede_askanswer on dede_ask.id=dede_askanswer.askid where dede_askanswer.ifanswer=1 and dede_askanswer.ifcheck=1 or dede_ask.bestanswer=dede_askanswer.id order by dede_ask.id desc LIMIT 0,6"}
      
  2. <</b>li><</b>a href="/ask/?ct=question&askaid=[field:id/]" class="link3">[field:title function=cn_substr(@me,46)/]<</b>br/>  
  3. [field:content function=cn_substr(html2text(@me),38)/],...<</b>a href="/ask/?ct=question&askaid=[field:id/]" target="_blank">详情>>
      
  4. <</b>/li>
      
  5. {/dede:sql}

上面的sql代码懂sql语句就可以看出缘由,dedecms问答的两张表,一张问题表dede_ask、一张回答表dede_askanswer,(前
缀dede_,设置不同的请修改不同的前缀)两张表查询出一问一答的。上面的limit后跟的数字就是从那一个开始,到哪个结束,自由控制查出条数,显示
的字符也可以控制字数,这个由自身需求设置。
 不过上面的sql查询出的是dedecms问答系统的所有的采纳审核的问题和回答,如果想自己调用不同的类别的问答的话,就需要自己稍加修改sql语句就ok了,先看代码:
  1. SELECT dede_ask.id, dede_ask.title, dede_askanswer.content
      
  2. FROM dede_ask
      
  3. LEFT JOIN dede_askanswer ON dede_ask.id = dede_askanswer.askid
      
  4. WHERE dede_askanswer.ifanswer =1
      
  5. AND dede_askanswer.ifcheck =1
      
  6. AND dede_askanswer.tid =1
      
  7. ORDER BY dede_ask.id DESC
      
  8. LIMIT 0 , 6

  9. 在dede的数据库中运行测试以上代码,这样方便,记得tid就是你划分的分类的大分类,也就是父类,在表中还会有一个tid2的,那个是子类,如
    果你要查那个类别的问答,就修改成哪个类别的tid数字,这样就ok了,能查出来了,剩下的就和以上那个调用方法一样了,修改那面的那个sql语句即可
游客

返回顶部