dedecms问答模块调用指定栏目

其实该方法和TC前面说的dedecms调用head.htm头部的文件方法差不多,我们也可以在dedecms下调用自定义模版,这样也方便全站的管理,为我们节省了很多代码。

1、打开”/include/common.func.php”,

然后在该文件中加入一个函数,代码如下:

function pasterTempletDiy($path)
{
require_once(DEDEINC."/arc.partview.class.php");
global $cfg_basedir,$cfg_templets_dir;
$tmpfile = $cfg_basedir.$cfg_templets_dir."/".$path;//模版文件的路径
$dtp = new PartView();
$dtp->SetTemplet($tmpfile);
$dtp->Display();
}

加上上面的函数之后,也就可以调用主站下的/templets/default/所有模板文件,比如要在问答模块的主页调用主站的随机文章,你可以在主站模板/templets/default/下新建一个suiji.htm文件,然后在suiji.htm里面加入你需要的标签和标签属性:

{dede:arclist titlelen='100' row='15' orderby='rand'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:arclist}

最后在问答模块首页的模板里面加入:

<?php
pasterTempletDiy("default/suiji.htm");
?>

这样就实现了真正意义的随机文章,因为ask模块是动态页所以每刷新页面文章就会变化,还可以通过修改:系统–系统基本参数–性能选项–arclist标签调用缓存的值来控制随机文章的更新频率。

这种方法还有很多扩展应用,比如让其他模块共用主站下的footer.htm,head.htm等文件。

网络dedecms问答模块调用指定栏目方法二:

在include 文件夹下 其实有2个标记文件夹 在taglib文件夹中的标记 可以在文章列表首页中使用(在dede官方帮助文档所说的全局标签)
tpllib文件夹下的标签 是动态的在 黄页和问答模块是能使用的
其实 在tpllib 文件夹下有个 plus_spacenewart.php 这个是在用户中心使用的一个调用文章的 标签
我们可以稍加修改就可以变成 arclist标签了

原理我也不讲了,下面代码存为plus_arclist.php ,放在include\tpllib\目录下。2011-3-11对代码进行修改,增加了typeid和flag的调用,代码如下

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

function plus_arclist(&$atts,&$refObj,&$fields)
{
 global $dsql,$_vars;

 $attlist = "channel=1,titlelen=30,infolen=200,row=8,imgwidth=120,imgheight=90,typeid=0,flag=";
 FillAtts($atts,$attlist);
 FillFields($atts,$fields,$refObj);
 extract($atts, EXTR_OVERWRITE);

 if($flag)
 $addflag=" and arc.flag like '$flag'";
 if($typeid!=0)
 $addtypeid=" and arc.typeid='$typeid'";

 $query= "Select arc.*,mt.mtypename,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,
  tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
  from `#@__archives` arc
  left join `#@__arctype` tp on arc.typeid=tp.id
  left join `#@__mtypes` mt on mt.mtypeid=arc.mtype
  where  arc.channel=$channel and arc.arcrank=0  $addtypeid $addflag order by id desc limit 0,$row"; 

 $dsql->SetQuery($query);
 $dsql->Execute("al");
 $artlist = '';
 $rearr = array();
 $GLOBALS['autoindex'] = 0;
 while($row = $dsql->GetArray("al"))
 {

  //处理一些特殊字段
  $row['infos'] = cn_substr($row['description'],$infolen);
  $row['id'] =  $row['id'];

  $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
  $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);

  $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
  $row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);

  if($row['litpic']=='')
  {
   $row['litpic'] = '/images/defaultpic.gif';
  }
  if(!eregi("^http://",$row['litpic']))
  {
   $row['picname'] = $row['litpic'] = $GLOBALS['cfg_cmsurl'].$row['litpic'];
  }
  else
  {
   $row['picname'] = $row['litpic'] = $row['litpic'];
  }
  $row['stime'] = GetDateMK($row['pubdate']);
  $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";
  $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."'>";
  $row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
  $row['fulltitle'] = $row['title'];
  $row['title'] = cn_substr($row['title'],$titlelen);
  if($row['color']!='') {
   $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
  }
  if(ereg('b',$row['flag']))
  {
   $row['title'] = "<strong>".$row['title']."</strong>";
  }
  //$row['title'] = "<b>".$row['title']."</b>";

  $row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";

  $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
  $row['memberurl'] = $GLOBALS['cfg_memberurl'];
  $row['templeturl'] = $GLOBALS['cfg_templeturl'];

  $GLOBALS['autoindex']++;
  $rearr[] = $row;

 }//loop line
 $dsql->FreeResult("al");
 return $rearr;
}

?>

注意  在使用arclist 的程序中要加上
require_once(dirname(__FILE__)."/../include/common.inc.php");
require_once(DEDEINC.'/channelunit.func.php');


本文固定链接: http://20tc.com/dedecms-ask-channel.html | TC的博客

该日志由 TC 于2012年05月10日发表在 Dedecms 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: dedecms问答模块调用指定栏目 | TC的博客
关键字: ,

dedecms问答模块调用指定栏目:目前有1 条留言

  1. 沙发
    黑猫 China Internet Explorer Windows :

    加上函数后,后台打不开了。

    2013-02-26 上午 10:41 [回复]

发表评论


*

快捷键:Ctrl+Enter

无觅相关文章插件,快速提升流量