ホームページ  >  記事  >  CMS チュートリアル  >  DEDECMS 静的テンプレート クラス ファイルとは何ですか?

DEDECMS 静的テンプレート クラス ファイルとは何ですか?

藏色散人
藏色散人オリジナル
2019-12-28 09:17:021958ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。