ホームページ > 記事 > CMS チュートリアル > DEDECMS 静的テンプレート クラス ファイルとは何ですか?
DEDECMS 静的テンプレート クラス ファイルとは何ですか?
静的テンプレート クラス ファイル Dreamweaver テンプレート エンジンは、XML 名前空間形式を使用するテンプレート パーサーです。
推奨学習: Dreamweaver cms
最大のDreamweaver パーサーを使用してテンプレートを解析する利点は、タグの属性を簡単に指定できることです。HTML を使用しているような感覚で、テンプレート コードが非常に直感的かつ柔軟になります。Dreamweaver テンプレート エンジンの新しいバージョンは、テンプレートを実現するだけでなく、解析では、テンプレート内の不正なマークアップも分析できます。
include/dedetag.class.php このファイルは、dedecms V5.3 以前のバージョンで使用されるメイン テンプレート クラスであり、コンパイルされたものではなく、分析テンプレート クラスです (違いは、前者が実行されることです)タグの位置を取得することによるコンテンツの置換、後者は PHP コードを直接解析し、2 回実行されます)
1. テンプレート構文
1. Dreamweaver テンプレート エンジンのコード スタイルは次の形式になります。 :
{dede:タグ名属性='値'/}
{dede:タグ名属性='値'}{/dede:タグ名}
{ dede:タグ名 属性 = '値'} カスタム スタイル テンプレート (InnerText) {/dede: タグ名}
ヒント:
基礎となるテンプレートでタグを使用する場合は、厳密に次のことを行う必要があります。 {dede: タグ名 Attribute='value'}{/dede:tag name} この形式を使用します。それ以外の場合はエラーが報告されます。
2. DreamWeaver テンプレート エンジンには複数のシステム タグが組み込まれており、これらのシステム タグはあらゆる状況で直接使用できます。
(1) グローバル マークは、外部変数を取得することを意味します。データベース パスワードに加えて、システムの任意の構成パラメータを呼び出すことができます。形式は次のとおりです:
{dede:global name='変数名 '}{/dede:global}
または
{dede:global name='変数名'/}
変数名は追加できません$ 記号を使用した変数 $ cfg_cmspath は、{dede:global name='cfg_cmspath'/} と記述する必要があります。
(2) foreach は、次の形式で配列を出力するために使用されます:
{dede:foreach array='配列名'}[フィールド:キー/] [フィールド:値/] {/ dede:foreach}
(3) include は次の形式でファイルを導入します:
{dede:include file='ファイル名' ismake='dede プレート テンプレートかどうか ( yes/no) '/}
ファイルの検索パスは、絶対パス、インクルード フォルダー、CMS インストール ディレクトリ、CMS メイン テンプレート ディレクトリの順です。
3. Dreamweaver タグは許可されます。関数は取得した値を次の形式で処理します:
{dede: タグ名属性='値' function='youfunction("パラメータ 1", "パラメータ 2", "@me ")' /}
@me が現在のタグの値を表すために使用される場合、他のパラメーターは関数によって決定されます。例:
{dede:field name='pubdate ' function='strftime ("%Y-%m-%d %H:%M:%S","@me")'/}
4. Dreamweaver マークを使用すると、プログラミングの拡張が制限されます。
形式は次のとおりです:
コードは次のとおりです:
{dede:tagname runphp='yes'} $aaa = @me; @me = "123456"; {/dede:tagname}
@me はタグ自体の値を表すため、echo などのステートメントはタグ内でのプログラミングでは使用できません。タグはすべての戻り値を @me に渡すだけです。
さらに、プログラム コードは基礎となるテンプレート InnerText のコンテンツを占めるため、プログラミングが必要なタグはデフォルトの InnerText のみを使用できます。
2. 解析メソッド
dedetag.class.php には 4 つのクラスがあります
class DedeAttribute 属性構造式
class DedeAttributeParse 属性パーサー
class DedeTag タグ構造式
class DedeTagParse タグ パーサー
解析クラスを使用してテンプレートを解析する場合、通常は次の手順に従います
1. 初期化:
$dtp = new DedeTagParse();
2. テンプレート/テンプレート文字列のロード:
$dtp->LoadTemplate(テンプレート ファイル (絶対パス)); / /キャッシュが生成され、2 回目にテンプレートを解析する必要はありません (
または
$dtp->LoadSource(string);
3.タグへの値
foreach($dtp->CTags as $tid=>$ctag) {
//ctag の名前と属性を決定し、通常は異なる値を割り当てます。関数の使用
if($ctag->GetName=='mytag') $dtp->Assign($tid, mytagvalue($ctag) );
}
上記の例では、mytag という名前のタグを mytagvalue 関数に直接渡して処理していますが、mytagvalue は $ctag の各属性を決定し、異なる内容を返します。
V5.3 バージョンでは、通常、フィールドやリストなどの特殊なタグに加えて、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; } }
以上がDEDECMS 静的テンプレート クラス ファイルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。