dedecms添加自定义标签显示非dede表数据

织梦教程 强烈建议 2024-02-06 14:11 85 0

  需求:调用一个商城系统里面的产品数据到dedecms文章页,希望对需要类似需求的人有所帮助

  功能实现:为了不用垮数据库查询,dedecms安装到商城系统数据库里面

  下面是实现的代码(请根据自己的环境进行修改)

  include/taglib/hongyungoods.lib.php

  文件内容如下:

  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();

  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('', ps.`AcStr`, '-view-', p.`ID`, '.html') AS url,

  CONCAT('', 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}

  [field:title/]

  {/dede:hongyungoods}



时间:(2024-02-06 14:11:57)
本站资源均来自互联网或会员发布,如果不小心侵犯了您的权益请与我们联系。我们将立即删除!谢谢!