dedecms 添加自定义标签显示非dede表数据
需求:调用一个商城系统里面的产品数据到dedecms文章页,希望对需要类似需求的人有所帮助
功能实现:为了不用垮数据库查询,dedecms安装到商城系统数据库里面
下面是实现的代码(请根据自己的环境进行修改)
include/taglib/hongyungoods.lib.php
| 
 <?php 
/** 
 * @author http://www.heui.org/
 
 */ 
if(!defined('DEDEINC')) exit('Request Error!'); 
functionlib_hongyungoods(&$ctag, &$refObj) 
{ 
    global$dsql, $envs, $cfg_cmsurl; 
    //属性处理 
    $attlist="row|6,titlelen|0,tid|0"; 
    FillAttsDefault($ctag->CAttribute->Items,$attlist); 
    extract($ctag->CAttribute->Items, EXTR_SKIP); 
    //只在指定栏目显示 
    if($tid>0 && $tid!= $envs['typeid']) return''; 
    if( !$dsql->IsTable("sl_products") ) return'没安装鸿运产品模块'; 
    $innertext= $ctag->GetInnerText(); 
    //@todo hongyungoods.htm 
    if(trim($innertext)=='') $innertext= GetSysTemplets("hongyungoods.htm"); 
    //@todo 智能条件 
    $where= 1; 
    $limit= 5; 
    $ctp= newDedeTagParse(); 
    $ctp->SetNameSpace('field', '[', ']'); 
    $ret= ''; 
    $query= "SELECT p.`Name` AS title, 
 CONCAT('http://www.hongyun2000.com/', ps.`AcStr`, '-view-', p.`ID`, '.html') AS url, 
 CONCAT('http://www.hongyun2000.com/uploadfile/s/', p.`Images`) AS img 
 FROM `sl_products` AS p 
 LEFT JOIN `sl_products_sort` AS ps ON p.`SID` = ps.`ID` 
 WHERE " . $where . "ORDER BY RAND() LIMIT " . $limit; 
    $dsql->Execute('me',$query); 
  while($rs= $dsql->GetArray('me')) 
  { 
      $rs['title'] = 0 == $titlelen?$rs['title']:cn_substr($rs['title'], $titlelen); 
        $ctp->LoadSource($innertext); 
      foreach($ctp->CTags as$tagid=>$ctag) { 
            if(!empty($rs[strtolower($ctag->GetName())])) { 
                $ctp->Assign($tagid,$rs[$ctag->GetName()]); 
            } 
          } 
          $ret.= $ctp->GetResult(); 
  } 
  return$ret; 
} 
?> 
 | 
调用页面使用:
| 
 {dede:hongyungoods} 
<dd> 
    <spanclass="tlink"><ahref="[field:url/]"><imgsrc="[field:img/]"alt="[field:title/]"/></a> 
    <ahref="[field:url/]"target="_blank">[field:title/]</a></span> 
</dd> 
{/dede:hongyungoods} 
 | 
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架