Maison  >  Article  >  Tutoriel CMS  >  Qu'est-ce que le fichier de classe de modèle statique DEDECMS ?

Qu'est-ce que le fichier de classe de modèle statique DEDECMS ?

藏色散人
藏色散人original
2019-12-28 09:17:021886parcourir

Qu'est-ce que le fichier de classe de modèle statique DEDECMS ?

Qu'est-ce que le fichier de classe de modèle statique DEDECMS ?

Fichier de classe de modèle statique Le moteur de modèle Dreamweaver est un analyseur de modèle qui utilise le formulaire d'espace de noms XML

Apprentissage recommandé : Dreamweaver cms

Le plus grand L'avantage d'utiliser l'analyseur Dreamweaver pour analyser les modèles est que vous pouvez facilement spécifier les attributs des balises. Cela ressemble à utiliser du HTML, ce qui rend le code du modèle très intuitif et flexible. La nouvelle version du moteur de modèles Dreamweaver peut non seulement réaliser le modèle. L'analyse peut également analyser le balisage incorrect dans les modèles.

include/dedetag.class.php Ce fichier est la classe de modèle principale utilisée par dedecms V5.3 et les versions précédentes. Il s'agit d'une classe de modèle analytique et non compilée (la différence est que la première est exécutée). en obtenant la position de la balise. Remplacement du contenu, ce dernier est directement analysé le code PHP, exécuté deux fois)

1. Syntaxe du modèle

1 Les styles de code du moteur de modèle DreamWeaver ont les formes suivantes. :

{dede : attribut du nom de la balise = 'valeur'/}

{dede : attribut du nom de la balise = 'valeur'}{/dede : nom de la balise}

{ dede : nom de la balise Attribut = 'value'} Modèle de style personnalisé (InnerText) {/dede : nom de la balise}

Conseils :

Si vous utilisez une balise avec un modèle sous-jacent, vous devez strictement utilisez {dede: tag name Attribute='value'}{/dede: tag name} Ce format, sinon une erreur sera signalée.

2. Le moteur de modèles Dreamweaver possède plusieurs balises système intégrées, et ces balises système peuvent être utilisées directement dans n'importe quelle situation.

(1) marque globale, qui signifie obtenir une variable externe En plus du mot de passe de la base de données, elle peut appeler n'importe quel paramètre de configuration du système. Le formulaire est :

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

ou

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

Le nom de la variable ne peut pas être ajouté avec le symbole $, tel que la variable $ cfg_cmspath doit être écrit sous la forme {dede:global name='cfg_cmspath'/}.

(2) foreach est utilisé pour générer un tableau sous la forme :

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

(3) include introduit un fichier sous la forme :

{dede:include file='file name' ismake='s'il s'agit d'un modèle de section dede (oui /no) '/}

Le chemin de recherche des fichiers est dans l'ordre : chemin absolu, dossier d'inclusion, répertoire d'installation du CMS, répertoire principal du modèle CMS

3. être utilisé dans n'importe quelle balise La fonction traite la valeur obtenue sous la forme :

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

où @me est utilisé pour représenter la valeur de la balise actuelle, et d'autres paramètres sont déterminés par votre fonction. Par exemple :

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

4. La marque Dreamweaver permet une extension limitée de la programmation.

Le format est :

Le code est le suivant :

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

@me représente la valeur de la balise elle-même. Par conséquent, des instructions telles que echo ne peuvent pas être utilisées en programmation. dans la balise, transmettez uniquement toutes les valeurs de retour à @me.

De plus, puisque le code du programme occupe le contenu du modèle InnerText sous-jacent, les balises qui nécessitent une programmation ne peuvent utiliser que l'InnerText par défaut.

2. Méthode d'analyse

Il existe quatre classes dans dedetag.class.php

expression de structure d'attribut de classe DedeAttribute

analyseur d'attribut de classe DedeAttributeParse

expression de structure de balise DedeTag de classe

analyseur de balise de classe DedeTagParse

Lors de l'utilisation de la classe d'analyse pour analyser des modèles, les étapes suivantes sont généralement suivies

1. 🎜 >

$dtp = new DedeTagParse();

2. Charger le modèle/chaîne de modèle :

$dtp->LoadTemplate (fichier modèle (chemin absolu)); générera un cache, et il n'est pas nécessaire d'analyser le modèle une deuxième fois

ou

$dtp->LoadSource(string); valeur à la balise

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

//Détermine le nom et les attributs de ctag et attribue des valeurs différentes, généralement en utilisant les fonctions

if($ctag->GetName=='mytag') $dtp->Assign($tid, mytagvalue($ctag) ); 🎜>Dans l'exemple ci-dessus, transférez directement la balise nommée mytag vers la fonction mytagvalue pour le traitement. Mytagvalue détermine chaque attribut de $ctag et renvoie un contenu différent.

Dans la version V5.3, généralement en plus des balises spéciales telles que field et list, les balises des fichiers analysés par classes commençant par arc.* correspondent au code source de l'include/taglib Ceci est déterminé. par le système. Un mappage automatique est effectué.

4. Afficher ou enregistrer au format HTML

$dtp->display();

ou

$dtp->SaveTo (fichier statique) nom);

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn