在include/taglib文件夾中新建文件hlh.lib.php,其中hlh也就是你標簽的名字,function的名字也必須跟文件名對應,固定格式lib_標簽名,如lib_hlh,本例子以調取文章為例
<?php
/**
* Created by PhpStorm.
* User: 侯蜀黍
* Date: 2019/4/24
* Time: 16:32
*
*/
function lib_hlh(&$ctag,&$refObj)
{
global $dsql,$envs;
/***
* &$ctag 獲取標簽信息類
* &$refObj 數據庫信息類
* $dsql 數據庫操作類
* $envs 欄目助手,記錄着欄目的部分信息
* 前台標簽
* {dede:hlh row='2' titlelen='36'}
<span>[field:title/]</span>
{/dede:hlh}
*
*/
/**默認屬性定義*/
$attlist="row|12,titlelen|24";
/**給前台沒有給出的屬性變量值,前台有標明的不變*/
FillAttsDefault($ctag->CAttribute->Items,$attlist);
/**綁定默認參數$ctag->CAttribute->Items 是前台模板標簽傳來的值array (size=2)
'row' => string '2' (length=1)
'titlelen' => string '36' (length=2)
獲取參數 row='2' titlelen='36'*/
extract($ctag->CAttribute->Items, EXTR_SKIP);
$revalue = ''; /** 定義空字符串用於返回數據*/
/**獲取標簽內的值 <span>[field:title/]</span>*/
$innertext = $ctag->GetInnerText();
$ctp = new DedeTagParse(); /** 聲明Dede織夢模板類*/
$ctp->SetNameSpace('field', '[', ']'); /** 設置標記的命名空間,默認為dede*/
$sql = "SELECT * FROM `#@__archives` WHERE 1=1 limit 0, $row"; /** 編寫sql語句*/
$dsql->Execute('me',$sql); /** 執行一個帶返回結果的函數*/
while($rs = $dsql->GetArray('me'))
{
/**根據屬性處理查詢變量*/
$rs['title'] = cn_substr($rs['title'], $titlelen);
/**獲取底層模板,將模板設置到CTags變量中*/
$ctp->LoadSource($innertext);
foreach($ctp->CTags as $tagid=>$ctag) {
if(!empty($rs[strtolower($ctag->GetName())])) {
$ctp->Assign($tagid,$rs[$ctag->GetName()]);
}
}
/**根據底層模板及查詢變量得到處理結果*/
$revalue .= $ctp->GetResult();
}
return $revalue;
}
?>
前台調用
{dede:hlh row='2' titlelen='36'}
<span>[field:title/]</span>
{/dede:hlh}
效果顯示

