GetName()=="specnote"){}" puis définissez le "$pecrule" ; " variable ."/> GetName()=="specnote"){}" puis définissez le "$pecrule" ; " variable .">

Maison >Tutoriel CMS >DEDECMS >Comment utiliser le modèle spécial dedecms

Comment utiliser le modèle spécial dedecms

藏色散人
藏色散人original
2020-01-13 09:38:202906parcourir

Comment utiliser le modèle spécial dedecms

Comment utiliser le modèle de thème dedecms ?

Il y a relativement peu d'informations sur le sujet des DeDeCms sur bbs J'ai consulté beaucoup d'informations auparavant mais je n'ai pas trouvé sa solution

Etude recommandée. : tissé Dream cms

La seule façon d'avoir suffisamment de nourriture et de vêtements est de compter sur soi-même; il y a ce passage dans la version officielle :

1. la liste est séparée sous la forme ID1, ID2, ID3. Le système exclura automatiquement les articles identiques de différents nœuds

2. Concernant l'utilisation de la balise [field:fieldname /] dans un seul modèle d'enregistrement ; veuillez vous référer aux instructions d'aide du système sur la balise arclist ;

3. L'ID du nœud est l'identifiant unique du nœud. Il est permis d'utiliser {dede:specnote id='identity'/} pour représenter un seul. nœud dans le modèle de sujet.

4. Dans des circonstances normales, chaque nœud affiche les documents dans la « Liste des articles du nœud ». Si vous spécifiez le « mode d'acquisition automatique », vous devez spécifier le mot-clé et l'ID de colonne.

Cependant, après avoir testé {dede:specnote id='note'/}, cela n'a pas amélioré l'efficacité. Nous avons donc commencé à résoudre ce problème pour remplacer le {dede:field name='note' d'origine, plus rigide ; /} tag;

Exemple :

Je souhaite afficher des articles avec des nœuds différents sur deux colonnes. Actuellement, cela ne peut pas être réalisé en utilisant "note". même nœud, ce qui semble forcément un peu gênant. Pas assez flexible.

Ci-dessous, j'écrirai ma solution pour référence aux étudiants. Tout d'abord, je dois préciser qu'elle ne peut réaliser que la fonction, mais que l'algorithme n'est pas nécessairement le meilleur, car je ne suis pas très bon. Je connais le code DEDECMS et je ne l'ai pas, je l'ai étudié attentivement et j'espère que tout le monde comprendra !

Étape 1 :

Emplacement du fichier : {include/inc_archives_view.php}

Le code est le suivant :

//广告标记
//-----------------------
else if($ctag->GetName()=="myad"){
$this->dtp->Assign($tagid,$this->PartView->GetMyAd($typeid,$ctag->GetAtt("name")));
}
// 专题标识
// by phpfans
else if($ctag->GetName()=="specnote"){
$this->dtp->Assign($tagid,$this->ChannelUnit->GetSpecList('',$this->ChannelUnit->specrule,$ctag->GetAtt("id")));
}

Introduction : {Ajouter un sujet sous la balise publicitaire Logo}afin que la page spéciale de liste d'articles puisse reconnaître la balise specnote

Étape 2 :

Emplacement du fichier : {include/inc_channel_unit.php}

var $specrule;
//-------------
//php5构造函数
//-------------

Introduction : Ajout de la définition de la variable $pecrule

Étape 3 :

Emplacement du fichier : {include/inc_channel_unit.php}

Le code est le suivant :

else if($ftype=="specialtopic"){
$this->specrule = $fvalue;
$fvalue = $this->GetSpecList($fname,$fvalue); 
}

Introduction : Ajoutez ici Ajoutez la phrase $this->specrule = $fvalue; afin d'obtenir les données du champ de note de la table addonspec

Étape 4 :

Emplacement du fichier : {include/inc_channel_unit.php}

Le code est le suivant :

//获得专题文章的列表
//--------------------------------
function GetSpecList($fname,$noteinfo,$noteid="")
{
if(!isset($GLOBALS['__SpGetArcList'])) require_once(dirname(__FILE__)."/inc/inc_fun_SpGetArcList.php");
if($noteinfo=="") return "";
$rvalue = "";
$tempStr = GetSysTemplets("channel/channel_spec_note.htm");
$dtp = new DedeTagParse(); </p> <p></p> <p>$dtp->LoadSource($noteinfo);
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $k=>$ctag){
$notename = $ctag->GetAtt("name");
if($noteid!="" && $ctag->GetAtt("noteid")!=$noteid){ continue; } //指定名称的专题节点
if($noteid!="" && $ctag->GetAtt("noteid")===$noteid) {
$isauto = $ctag->GetAtt("isauto");
$idlist = trim($ctag->GetAtt("idlist"));
$rownum = trim($ctag->GetAtt("rownum"));
if(empty($rownum)) $rownum = 40;
$keywords = "";
$stypeid = 0;</p> <p>if($isauto==1){
$idlist = "";
$keywords = trim($ctag->GetAtt("keywords"));
$stypeid = $ctag->GetAtt("typeid");
}</p> <p>if(trim($ctag->GetInnerText())!="") $listTemplet = $ctag->GetInnerText();
else $listTemplet = GetSysTemplets("spec_arclist.htm");
$idvalue = SpGetArcList($this->dsql,
$stypeid,$rownum,$ctag->GetAtt("col"),
$ctag->GetAtt("titlelen"),$ctag->GetAtt("infolen"),
$ctag->GetAtt("imgwidth"),$ctag->GetAtt("imgheight"),
"all","default",$keywords,$listTemplet,100,0,$idlist);</p> <p>$notestr = str_replace("~notename~",$notename,$tempStr);
$notestr = str_replace("~spec_arclist~",$idvalue,$notestr);
$rvalue .= $notestr;
if($noteid!="" && $ctag->GetAtt("noteid")==$noteid){ break; }
}
}
}
$dtp->Clear();
return $rvalue;
}

Introduction : Il y a quelques petits changements, qui seront clairs après les avoir comparés par vous-même, donc il n'y en aura plus trembler ici

Étape 5 :

Instructions : La balise originale {dede:field name='note'/} n'est pas valide. Si vous souhaitez l'utiliser, veuillez modifier la quatrième partie par vous-même. . .

Très simple

Fait !

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