Heim  >  Artikel  >  CMS-Tutorial  >  Was ist die statische Vorlagenklassendatei von DEDECMS?

Was ist die statische Vorlagenklassendatei von DEDECMS?

藏色散人
藏色散人Original
2019-12-28 09:17:021886Durchsuche

Was ist die statische Vorlagenklassendatei von DEDECMS?

Was ist die statische DEDECMS-Vorlagenklassendatei?

Statische Vorlagenklassendatei Die Dreamweaver-Vorlagen-Engine ist ein Vorlagenparser, der das XML-Namespace-Formular verwendet

Empfohlene Lerninhalte: Dreamweaver cms

Der größte Vorteil Der Vorteil bei der Verwendung des Dreamweaver-Parsers zum Parsen von Vorlagen besteht darin, dass Sie die Attribute der Tags einfach angeben können. Es fühlt sich an wie bei der Verwendung von HTML, wodurch der Vorlagencode sehr intuitiv und flexibel wird. Die neue Version der Dreamweaver-Vorlagen-Engine kann nicht nur das Parsen von Vorlagen realisieren kann auch fehlerhaftes Markup in Vorlagen analysieren.

include/dedetag.class.php Diese Datei ist die Hauptvorlagenklasse, die von dedecms V5.3 und früheren Versionen verwendet wird. Es handelt sich um eine analytische Vorlagenklasse, nicht um eine kompilierte (der Unterschied besteht darin, dass erstere ausgeführt wird). Durch Ersetzen der Tag-Position wird letzterer direkt analysiert und zweimal ausgeführt)

1. Die Codestile der DreamWeaver-Vorlagen-Engine haben die folgenden Formen :

{dede: tag name attribute = 'value'/}

{dede: tag name attribute = 'value'}{/dede: tag name}

{ dede: Tag-Name Attribut = 'Wert'} Benutzerdefinierte Stilvorlage (InnerText) {/dede: Tag-Name}

Tipps:

Wenn Sie ein Tag mit einer zugrunde liegenden Vorlage verwenden, müssen Sie dies unbedingt tun Verwenden Sie {dede: tag name Attribute='value'}{/dede: tag name} Dieses Format, andernfalls wird ein Fehler gemeldet.

2. Die DreamWeaver-Vorlagen-Engine verfügt über mehrere integrierte System-Tags, die in jeder Situation direkt verwendet werden können.

(1) Globale Markierung, was bedeutet, dass zusätzlich zum Datenbankkennwort beliebige Konfigurationsparameter des Systems aufgerufen werden können. Das Formular lautet:

{dede: global name='variable name '}{/dede:global}

oder

{dede:global name='variable name'/}

Der Variablenname kann nicht sein mit dem $-Symbol hinzugefügt, z. B. die Variable $ cfg_cmspath sollte als {dede:global name='cfg_cmspath'/} geschrieben werden.

(2) foreach wird verwendet, um ein Array in der Form auszugeben:

{dede:foreach array='array name'}[field:key/] [field:value/] {/ dede:foreach}

(3) include führt eine Datei in der Form ein:

{dede:include file='file name' ismake='whether it is a dede section template ( ja/nein) '/}

Der Suchpfad für Dateien ist in der Reihenfolge: absoluter Pfad, Include-Ordner, CMS-Installationsverzeichnis, CMS-Hauptvorlagenverzeichnis

3. Das Dreamweaver-Tag ist zulässig Zur Verwendung in jedem Tag. Die Funktion verarbeitet den erhaltenen Wert in der Form:

{dede: tag name attribute='value' function='youfunction("Parameter 1", "Parameter 2", "@me ")' /}

wobei @me verwendet wird, um den Wert des aktuellen Tags darzustellen, und andere Parameter von Ihrer Funktion bestimmt werden, zum Beispiel:

{dede:field name=' pubdate' function='strftime ("%Y-%m-%d %H:%M:%S","@me")'/}

4. Die Dreamweaver-Marke ermöglicht eine begrenzte Programmiererweiterung.

Das Format ist:

Der Code lautet wie folgt:

{dede:tagname runphp='yes'} 
$aaa = @me; 
@me = "123456"; 
{/dede:tagname}

@me stellt den Wert des Tags selbst dar. Anweisungen wie echo können daher nicht in der Programmierung verwendet werden Innerhalb des Tags nur Übergeben Sie alle Rückgabewerte an @me.

Da der Programmcode außerdem den Inhalt der zugrunde liegenden Vorlage InnerText einnimmt, können die Tags, die programmiert werden müssen, nur den Standard-InnerText verwenden.

2. Parsing-Methode

Es gibt vier Klassen in dedetag.class.php

Klasse DedeAttribute-Attributstrukturausdruck

Klasse DedeAttributeParse-Attributparser

Klasse DedeTag-Tag-Strukturausdruck

Klasse DedeTagParse-Tag-Parser

Bei Verwendung der Parsing-Klasse zum Parsen von Vorlagen werden im Allgemeinen die folgenden Schritte befolgt

1 🎜 >

$dtp = new DedeTagParse();

2. Vorlage/Vorlagenzeichenfolge laden:

$dtp->LoadTemplate (Vorlagendatei (absoluter Pfad)); generiert einen Cache und es ist nicht erforderlich, die Vorlage ein zweites Mal zu analysieren

$dtp->LoadSource(string);

3 Wert für das Tag

foreach($dtp->CTags as $tid=>$ctag) {

//Bestimmen Sie den Namen und die Attribute von ctag und weisen Sie normalerweise unterschiedliche Werte zu Verwenden von Funktionen

if($ctag->GetName=='mytag') $dtp->Assign($tid, mytagvalue($ctag) );

}

Übertragen Sie im obigen Beispiel das Tag mit dem Namen mytag zur Verarbeitung direkt an die Funktion mytagvalue. Mytagvalue bestimmt jedes Attribut von $ctag und gibt unterschiedliche Inhalte zurück.

In Version V5.3 entsprechen normalerweise zusätzlich zu speziellen Tags wie Feld und Liste die Tags von Dateien, die von Klassen analysiert werden, die mit arc.* beginnen, dem Quellcode der Include/Taglib Das System führt eine automatische Zuordnung durch.

4. Als HTML anzeigen oder speichern

$dtp->display();

oder

$dtp->SaveTo (statische Datei). Name);

对于二次开发人员而言,不大需要知道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; 
} 
}

Das obige ist der detaillierte Inhalt vonWas ist die statische Vorlagenklassendatei von DEDECMS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn