最好的a片|免费观看a级片快播

莫著急... 美好的東西往往來的都比較慢!

22 Jun, 2017

dedecms 織夢常用函數類參考

			
全局函數:common.func.php 公用函數
數據庫類: dedesql.class.php
動態分頁類:include/datalistcp.class.php
靜態模板類:include/dedetag.class.php
動態模板類:include/dedetemplate.class.php
全局函數:
1、common.func.php 公用函數
獲得當前的腳本網址
function GetCurUrl()
返回格林威治標準時間
function MyDate($format=’Y-m-d H:i:s’,$timest=0)
把全角數字轉為半角
function GetAlabNum($fnum)
把含HTML的內容轉為純text
function Html2Text($str,$r=0)
把文本轉HTML
function Text2Html($txt)
輸出Ajax頭
function AjaxHead()
中文截取2,單字節截取模式
function cn_substr($str,$slen,$startdd=0)
把標準時間轉為Unix時間戳
function GetMkTime($dtime)
獲得一個 0000-00-00 00:00:00 標準格式的時間
function GetDateTimeMk($mktime)
獲得一個 0000-00-00 標準格式的日期
function GetDateMk($mktime)
獲得用戶IP
function GetIP()
獲取拼音以gbk編碼為準
function GetPinyin($str,$ishead=0,$isclose=1)
dedecms通用消息提示框
function ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)
保存一個cookie
function PutCookie($key,$value,$kptime=0,$pa=”/”)
刪除一個cookie
function DropCookie($key)
獲取cookie
function GetCookie($key)
獲取驗證碼
function GetCkVdValue()
過濾前臺用戶輸入的文本內容
// $rptype = 0 表示僅替換 html標記
// $rptype = 1 表示替換 html標記同時去除連續空白字符
// $rptype = 2 表示替換 html標記同時去除所有空白字符
// $rptype = -1 表示僅替換 html危險的標記
function HtmlReplace($str,$rptype=0)
獲得某文檔的所有tag
function GetTags($aid)
過濾用于搜索的字符串
function FilterSearch($keyword)
處理禁用HTML但允許換行的內容
function TrimMsg($msg)
獲取單篇文檔信息
function GetOneArchive($aid)
數據庫類:
系統會自動載入 dedesql.class.php
文件,并用
$dsql = $db = new DedeSql(false);
進行初始化數據庫連接,因此在工程所有文件中均不需要單獨初始化這個類,可直接用 $dsql 或 $db
進行操作,為了防止錯誤,操作完后不必關閉數據庫。
常用的方法:
1、執行一個非查詢類型的SQL語句,如 insert 、create 、update 等
$rs = $db->ExecuteNoneQuery($sql);
返回值為是否執行成功。
2、執行一個非查詢類型的SQL語句,并返回成功記錄數
$rs = $db->ExecuteNoneQuery2($sql);
與上面相比,它返回的是影響的記錄數,而不是布爾值
3、返回單個記錄
$arr = $db->GetOne($sql);
$dsql 如果不帶 limit ,系統會自動加上 limit 0,1
4、執行條件查詢語句
$db->SetQuery($dsql);
$db->Execute();
while($arr = $db->GetArray())
{
}
可以簡化為:
$db->Execute(‘me’,$dsql);
while($arr = $db->GetArray())
{
}
‘me’ 為記錄集游標,用于區分不同的查詢,如:
$db->Execute(‘me’,$dsql);
while($arr = $db->GetArray())
{
  $db->Execute(’2′,$dsql2);
  while($arr2 =
$db->GetArray())
  {
     
  }
}
像這種情況必須指定一個值區分默認的’me’參數,否則會出錯
$db->GetArray($rsid,$acctype) 參數
$rsid=”me”
$acctype=MYSQL_ASSOC
在查詢游標中讀取數據還可以用
$db->GetObject($rsid=”me”);
返回的結果是用類結構表示的值。
5、獲取上一個插入的自動遞增主鍵id值
$db->GetLastID();
6、獲得查詢的總記錄數
$db->GetTotalRow($rsid=”me”)
7、獲得MySql的版本號
$db->GetVersion($isformat=true)
默認的情況下會轉換成 x.xx 形式浮點數
8、析放某查詢的資源
$db->FreeResult($rsid=”me”);
9、在數據庫中是否存在某數據表
$db->IsTable($tbname)
10、重新選擇要操作的數據庫
$db->SelectDB($dbname);
11、獲得數據庫連接標識
$db->linkID
獲得這個連接標識后,可以直接用mysql相關函數進行數據庫操作
在非不得已的情況,項目中一般不使用這個變量。
 動態分頁類:
類文件
include/datalistcp.class.php
適用范圍:數據量不大的數據分頁
使用方法:
$dl = new DataListCP();
$dl->pageSize =
25;             //設定每頁顯示記錄數(默認25條)
$dl->SetParameter($key,$value); //設定get字符串的變量
//這兩句的順序不能更換
$dl->SetTemplate($tplfile);     //載入模板
$dl->SetSource($sql);           //設定查詢SQL
$dl->Display();                 //顯示
模板
{dede:datalist}
 <li>{field.fieldname1/}
– {field.fieldname2/} …</li>
{/dede:datalist}
{tag:pagelist listitem=”info,index,end,pre,next,pageno”
listsize=”5″/}
listitem、listsize 是可選屬性
如果需要自定義 datalist 相關屬性,可以繼續本類來創建一個新類,只需改變
GetArcList($atts,$refObj=”,$fields=array()) 方法即可。
靜態模板類:
類文件
include/dedetag.class.php
這個文件是dedecms
V5.3及之前版本使用的主要的模板類,它是解析式模板類,并非編譯式的(區別是前者通過獲得標簽位置進行內容替換,后者是直接解析式PHP代碼,二次執行)
一、模板語法
織夢模板引擎是一種使用XML名字空間形式的模板解析器,使用織夢解析器解析模板的最大好處是可以輕松的制定標記的屬性,感覺上就像在用HTML一樣,使模板代碼十分直觀靈活,新版的織夢模板引擎不單能實現模板的解析還能分析模板里錯誤的標記。
1、織夢模板引擎的代碼樣式有如下幾種形式:
{dede:標記名稱 屬性=’值’/}
{dede:標記名稱 屬性=’值’}{/dede:標記名稱}
{dede:標記名稱 屬性=’值’}自定義樣式模板(InnerText){/dede:標記名稱}
提示:
如果使用帶底層模板的標記,必須嚴格用{dede:標記名稱 屬性=’值’}{/dede:標記名稱} 這種格式,否則會報錯。
2、織夢模板引擎內置有多個系統標記,這些系統標記在任何場合都是能直接使用的。
(1) global標記,表示獲取一個外部變量,除了數據庫密碼之外,能調用系統的任何配置參數,形式為:
{dede:global name=’變量名稱’}{/dede:global}
或
{dede:global name=’變量名稱’/}
其中變量名稱不能加 $ 符號,如變量 $cfg_cmspath ,應該寫成 {dede:global
name=’cfg_cmspath’/} 。
(2) foreach 用來輸出一個數組,形式為:
{dede:foreach array=’數組名稱’}[field:key/]
[field:value/]{/dede:foreach}
(3) include 引入一個文件,形式為:
{dede:include file=’文件名稱’ ismake=’是否為dede板塊模板(yes/no)’/}
對文件的搜索路徑為順序為:絕對路徑、include文件夾,CMS安裝目錄,CMS主模板目錄
3、織夢標記允許在任何標記中使用函數對得到的值進行處理,形式為:
{dede:標記名稱 屬性=’值’ function=’youfunction(“參數一”,”參數二”,”@me”)’/}
其中 @me 用于表示當前標記的值,其它參數由你的函數決定是否存在,例如:
{dede:field name=’pubdate’ function=’strftime(“%Y-%m-%d
%H:%M:%S”,”@me”)’/}
4、織夢標記允許有限的編程擴展。
格式為:
{dede:tagname runphp=’yes’}
$aaa = @me;
@me = “123456″;
{/dede:tagname}
@me 表示這個標記本身的值,因此標記內編程是不能使用echo之類的語句的,只能把所有返回值傳遞給@me。
此外由于程序代碼占用了底層模板InnerText的內容,因此需編程的標記只能使用默認的InnerText。
 
二、解析方式
在 dedetag.class.php
里面有四個類
class
DedeAttribute 屬性結構表述
class
DedeAttributeParse 屬性解析器
class DedeTag 標簽結構表述
class
DedeTagParse 標簽解析器
使用解析類解析模板時一般經過下面的步驟
1、初始化:
 
$dtp = new DedeTagParse();
2、載入模板/模板字符串:
$dtp->LoadTemplate(模板文件(絕對路徑)); //會生成緩存,第二次不需解析模板
 
或
$dtp->LoadSource(字符串);
3、給標簽賦值
foreach($dtp->CTags as
$tid=>$ctag) {
  //判斷ctag的名稱和屬性,并給賦不同的值,通常用函數處理
 if($ctag->GetName==’mytag’)
$dtp->Assign($tid, mytagvalue($ctag) );
}
在上面例子中,直接把名稱為 mytag的標簽轉交給 mytagvalue 函數處理,mytagvalue
里判斷$ctag的各個屬性,返回不同內容即可。
在 V5.3版本中,通常除了field、list等專用標簽之外,凡arc.*開頭的類解析的文件,標簽都是對應該
include/taglib 的源碼的,這個由系統進行了自動的映射。
4、顯示或保存為HTML
$dtp->display();
或
$dtp->SaveTo(靜態文件名);
對于二次開發人員而言,不大需要知道dedecms模板具體解析方式,不過應該十分清楚CTag這個類的結構,從而判斷標簽不同屬性進行處理。
class
DedeTag
{
   var
$IsReplace=FALSE; //標記是否已被替代,供解析器使用
   var
$TagName=”"; //標記名稱
   var
$InnerText=”"; //標記之間的文本
   var
$StartPos=0; //標記起始位置
   var
$EndPos=0; //標記結束位置
   var
$CAttribute=”"; //標記屬性描述,即是class DedeAttribute
   var
$TagValue=”"; //標記的值
   var $TagID =
0;   //獲取標記的名稱和值   function
GetName()   {      return
strtolower($this->TagName);   }   function
GetValue()   {      return
$this->TagValue;   }   //下面兩個成員函數僅是為了兼容舊版   function
GetTagName()   {      return
strtolower($this->TagName);   }   function
GetTagValue()   {      return
$this->TagValue;   }   //獲取標記的指定屬性   function
IsAttribute($str)   {      return
$this->CAttribute->IsAttribute($str);   }   function
GetAttribute($str)   {      return
$this->CAttribute->GetAtt($str);   }   function
GetAtt($str)   {      return
$this->CAttribute->GetAtt($str);   }   function
GetInnerText()   {      return
$this->InnerText;   }}     
 
動態模板類:
核心類文件
include/dedetemplate.class.php
用途:用于非核心模塊的動態頁面或列表頁的模板解析,如:member/content_list.php ,通常是在
datalistcp.class.php
中使用,這個類在動態運行的情況下,由于本身是把模板編譯成PHP的,因此性能上會優級于舊的解析類,這個方法將在未來版本中作為通用的方式。
一、使用方法:
$tpl = new DedeTemplate(
模板對象實例名稱,通常是’tpl’,
[模板存放目錄(生成緩存時會存放在這個目錄),
include語法默認引用目錄]
);
通常情況下參數二和參數三是不必要的,如:
$tpl = new DedeTemplate(‘tpl’);
如果在類文件中調用,應該加上設置:
$this->tpl->SetObject($this);
在一些塊調用中默認將使用當前類的成員函數。
$tpl->LoadTemplate(模板的物理路徑);
如果模板中帶有 {dede:config name=” value=”/}
可以在載入模板后,通過 $tpl->GetConfig($name) 獲得這些變量的值。
顯示頁面或保存頁面為文件
$tpl->Display();
$tpl->SaveTo(物理絕對路徑的文件名);
二、模板標記語法
1、標記通用特性
(1) 短標記
{dede:tagname.name/}
等同于
{dede:tagname name=” /}
(2) 塊標記
{dede:tagname}
循環代碼
{/dede:tagname}
2、標記的具體語法及對應的PHP代碼
(1) 配置變量
{dede:config name=” value=”/}
配置變量可以在載入模板后通過 $tpl->GetConfig($name)
獲得,僅作為配置,不在模板中顯示。
(2) 短標記
{dede:global.name/}  外部變量     等同于 <?php echo $name; ?>
{dede:var.name/}     var數組      等同于 <?php echo $_vars['name'];
?>
{dede:field.name/}   field數組    等同于 <?php echo $fields['name'];
?>
{dede:cfg.name/}     系統配置變量 等同于 <?php echo $cfg_name;
?>
考慮到大多數情況下都會在函數或類中調用模板,因此 $_vars、$fields 數組必須聲明為 global
數組,否則模板引擎無法獲得它的值從而導致產生錯誤。
(3) 自由調用塊標記
{tag:blockname bind=’GetArcList’ bindtype=’class’}
循環代碼
{/tag:blockname}
必要屬性:
bind      數據源來源函數
bindtype  函數類型,默認是 class 可選為
sub
rstype    返回結果類型,默認是 array ,可選項為 string
自定義函數格式必須為 function(array $atts,object $refObj, array
$fields);
在沒有指定 bind 綁定的函數的情況下,默認指向
MakePublicTag($atts,$tpl->refObj,$fields)
統一管理,這個函數存放在 cls_dede_tplinc.php 。
(4) 固定塊標記
[1] datalist
從綁定類成員函數GetArcList中獲取數組并輸出
{dede:datalist}
循環代碼
{/dede:datalist}
遍歷一個二給維數組,數據源是固定的,只適用用類調用。
等同于
{tag:blockname bind=’GetArcList’ bindtype=’class’
rstype=’arrayu’}
循環代碼
{/tag:blockname}
[2] label
從綁定函數中獲取字符串值并輸出
等同于 {tag:blockname bind=’func’ bindtype=’sub’ rstype=’string’/}
[3] pagelist
從綁定類成員函數GetPageList中獲取字符串值并輸出
等同于 {tag:blockname bind=’GetPageList’ bindtype=’class’
rstype=’string’/}
(5) include 語法
{dede:include file=”/}
{dede:include filename=”/}
(6) php 代碼塊
{dede:php
php 代碼
/}
或
{dede:php}
php代碼
{/dede:php}
(7) if 條件
僅支持 if ,else ,else 直接用{else}表示,但不支持{else if}這樣的語法
,一般建議模板中不要使用太復雜的條件語法,如果確實有需要,可以直接使用 php 語法。
{dede:if 條件} a-block {else} b-block
{/dede:if}
條件中允許使用 var.name 、 global.name 、 field.name、cfg.name
表示相應的變量。
如:
{dede:if field.id>10 }
{/dede:if}
(8) 遍歷一個 array 數組
{dede:array.name}
 {dede:key/} = {dede:value/}
{/dede:array}
各種語法的具體編譯后的代碼,可查看 dede-template-class.php 的 function
CompilerOneTag(&$cTag)。
塊調用示例代碼:
1、示例一
{tag:datalist timeformat=”"}
 <tr>
   <td class=’col1′>
     <div>?<a
href=’{tag:field.arcurl/}’>{tag:field.title/}</a></div>
     <!–div
class=’descriptions’>&nbsp;&nbsp;&nbsp;&nbsp;{tag:field.description
function=”CnSubstr(@me,150)”/}…</div–>
   </td>
   <td
class=’col2′>{tag:field.formattime/}</td>
 </tr>
{/tag:datalist}
編譯后的代碼
<?php
$atts = array();
$atts['tagname'] = ‘datalist’;
$atts['timeformat'] = ”;
$blockValue =
$this->refObj->GetArcList($atts,$this->refObj,$fields);
foreach( $blockValue as $key=>$fields )
{
?>
 <tr>
   <td class=’col1′>
     <div>?<a
href=’<?php echo $fields['arcurl'];
?>’><?php echo
$fields['title'];
?></a></div>
     <!–div
class=’descriptions’>&nbsp;&nbsp;&nbsp;&nbsp;<?php
echo CnSubstr($fields['description'],150);
?>…</div–>
   </td>
   <td class=’col2′><?php
echo $fields['formattime'];
?></td>
 </tr>
<?php
}
?>
2、示例二
{tag:article sort=’new’ titlelen=’36′ row=’10′}
  <dd>[{tag:field.typename/}]<a
href=”{tag:field.arcurl/}”>{tag:field.title
function=”CnSubstr(@me,24)”/}</a></dd>
{/tag:article}
編譯后的代碼
<?php
$atts = array();
$atts['tagname'] = ‘article’;
$atts['sort'] = ‘new’;
$atts['titlelen'] = ’36′;
$atts['row'] = ’10′;
$blockValue =
MakePublicTag($atts,$this->refObj,$fields);
if(is_array($blockValue) &&
count($blockValue) > 0){
foreach( $blockValue as $key=>$fields )
{
?>
  <dd>[<?php echo
$fields['typename']; ?>]<a
href=”<?php echo $fields['arcurl'];
?>”><?php echo
CnSubstr($fields['title'],24);
?></a></dd>
<?php
}
}
?>
							
		


  • 上一篇:沒有了
  • 下一篇:DEDECMS 5.7中各函數所在的文件和位置(超實用)
  • 029-68787028,4000-613-001 & [email protected]

    西安市高新區灃惠南路與科技七路交匯處西南角, 西水·水岸陽光1號樓1-604號

    最好的a片 一本道图片 河南11选五5历史开奖 a片人与兽视频 114股票分析 大槻响作品封面番号 黑龙江数字6十1开奖 微乐捉鸡麻将外挂软件作弊器 独行侠和76人在中国 宝石探秘财富加倍 谷原希美 体彩七位数历史开奖号 乌鲁木齐沐足一般都是什么项目 东京热一本道色综合网 中国体彩7位数开奖结果查询表 基金配资申请 麻仓优水岛津实