找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1033|回复: 0

[分享] 修改dede5.7 ask源码标签 使之实现--->调用相应级别的问答

[复制链接]
发表于 2018-7-9 21:27:23 | 显示全部楼层 |阅读模式 来自 河南省新乡市
修改dede5.7 ask源码标签 使之实现--->调用相应级别[一级,二级,...栏目]的问答,可根据需要修改

/include/asks.lib.php

  1.         <?php if(!defined('DEDEINC')) exit('Request Error!');

  2.         /**

  3.          * 问答调用标签

  4.          *

  5.          * @version        $Id: ask.lib.php 1 9:29 2010年7月6日Z tianya $

  6.          * @package        DedeCMS.Taglib

  7.          * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.

  8.          * @license        http://help.dedecms.com/usersguide/license.html

  9.          * @link           http://www.dedecms.com

  10.          */

  11.         function lib_asks(&$ctag,&$refObj)

  12.         {

  13.             global $dsql, $envs, $cfg_dbprefix, $cfg_cmsurl,$cfg_ask_directory,$cfg_ask_isdomain,$cfg_ask_domain;

  14.             //属性处理

  15.             $attlist="row|6,qtype|new,titlelen|24,typeid|0";

  16.             FillAttsDefault($ctag->CAttribute->Items,$attlist);

  17.             extract($ctag->CAttribute->Items, EXTR_SKIP);

  18.             

  19.             if( !$dsql->IsTable("{$cfg_dbprefix}ask") ) return '没安装问答模块';

  20.             

  21.             //启用二级域名

  22.             if($cfg_ask_isdomain == 'Y')

  23.             {

  24.                 $weburl = $cfg_ask_domain.'/';  

  25.             }else{

  26.                 $weburl = $cfg_ask_directory.'/';

  27.             }

  28.             

  29.             $innertext = $ctag->GetInnerText();

  30.             if(trim($innertext)=='') $innertext = GetSysTemplets("asks.htm");

  31.             

  32.             if($typeid==0) {

  33.                 $typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] );

  34.             }

  35.             

  36.             $arc=$dsql->GetOne("Select id,topid,typename From `dede_arctype` where id='$typeid' ");

  37.             $topid=$arc['topid'];

  38.             $typename=$arc['typename'];

  39.             

  40.             if($topid==0){

  41.                 $arcs=$dsql->GetOne("SELECT tid,tid2 FROM `dede_ask` where tidname='$typename' ");

  42.                 $tid=$arcs['tid'];

  43.             }else{

  44.                 $arcs=$dsql->GetOne("SELECT tid,tid2 FROM `dede_ask` where tid2name='$typename' ");

  45.                 $tid=$arcs['tid2'];

  46.             }

  47.             

  48.             $qtypeQuery = '';

  49.             if($tid > 0) $tid = " (tid=$tid Or tid2='$tid') AND ";

  50.             else $tid = '';

  51.             //推荐问题

  52.             if($qtype=='commend') $qtypeQuery = " $tid digest=1 ORDER BY dateline DESC ";

  53.             //新解决问题

  54.             else if($qtype=='ok') $qtypeQuery = " $tid status=1 ORDER BY solvetime DESC ";

  55.             //高分问题

  56.             else if($qtype=='high') $qtypeQuery = " $tid status=0 ORDER BY reward DESC ";

  57.             //新问题

  58.             else $qtypeQuery = " $tid status=0 ORDER BY disorder DESC, dateline DESC ";

  59.          

  60.             $ctp = new DedeTagParse();

  61.             $ctp->SetNameSpace('field', '[', ']');

  62.          

  63.             $solvingask = '';

  64.             $query = "SELECT id, tid, tidname, tid2, tid2name, title, content, dateline FROM `dede_ask` WHERE $qtypeQuery  limit 0, $row";

  65.             $dsql->Execute('me',$query);

  66.             

  67.             while($rs = $dsql->GetArray('me'))

  68.             {

  69.                 $rs['title'] = cn_substr($rs['title'], $titlelen);

  70.                 $rs['content'] = strip_tags($rs['content']);

  71.                 $ctp->LoadSource($innertext);

  72.                 if($rs['tid2name'] != '')

  73.                 {

  74.                     $rs['tid'] = $rs['tid2'];

  75.                     $rs['tidname'] = $rs['tid2name'];

  76.                 }

  77.                 //$rs['url'] = $weburl."?ct=question&askaid=".$rs['id'];

  78.                 $rs['url'] = $weburl.$rs['id'].'.html';

  79.                 foreach($ctp->CTags as $tagid=>$ctag) {

  80.                     if(!empty($rs[strtolower($ctag->GetName())])) {

  81.                         $ctp->Assign($tagid,$rs[$ctag->GetName()]);

  82.                     }

  83.                 }

  84.                 $solvingask .= $ctp->GetResult();

  85.             }

  86.             return $solvingask;

  87.         }
复制代码


        

                模板调用---->去掉了 tid='0',其他可根据需要调用

                {dede:ask row='6' qtype='new'  titlelen='24'}

                <dd>

                    <span>[<a href='[field:typeurl/]'>[field:tidname/]</a>]</span>

                    <span><a href="[field:url/]">[field:title/]</a></span>

                </dd>

                {/dede:ask}

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

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

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-4-25 23:45 , Processed in 0.037746 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表