dedeCMS自定義dede標簽


在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}

  效果顯示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM