Heim  >  Artikel  >  CMS-Tutorial  >  So verwenden Sie die spezielle Vorlage von dedecms

So verwenden Sie die spezielle Vorlage von dedecms

藏色散人
藏色散人Original
2020-01-13 09:38:202864Durchsuche

So verwenden Sie die spezielle Vorlage von dedecms

Wie verwende ich die Dedecms-Themenvorlage?

Es gibt relativ wenig Informationen zum Thema DeDeCms auf bbs. Ich habe schon viele Informationen konsultiert, konnte aber keine Lösung finden

Empfohlene Studie : gewebte Traum cms

Die einzige Möglichkeit, ausreichend Nahrung und Kleidung zu haben, besteht darin, sich auf sich selbst zu verlassen; es gibt diese Passage in der offiziellen Version:

Der Artikel Die Liste ist nach ID1, ID2 und ID3 getrennt. Das System schließt automatisch identische Artikel aus verschiedenen Knoten aus.

2. Bezüglich der Verwendung des Tags [field:fieldname /] in einer einzelnen Datensatzvorlage; Bitte beachten Sie die Systemhilfeanweisungen zum Arclist-Tag.

3. Die Knoten-ID ist die eindeutige Kennung des Knotens. Zur Darstellung eines einzelnen Knotens ist die Verwendung von {dede:specnote id='identity'/} zulässig Knoten in der Themenvorlage.

4. Unter normalen Umständen zeigt jeder Knoten Dokumente in der „Knotenartikelliste“ an. Wenn Sie „Automatischer Erfassungsmodus“ angeben, müssen Sie das Schlüsselwort und die Spalten-ID angeben.

Nach dem Testen von {dede:specnote id='note'/} hat dies die Effizienz jedoch nicht verbessert, sodass wir begonnen haben, dieses Problem zu lösen, um das ursprüngliche, starrere {dede:field name='note' zu ersetzen; /}-Tag;

Beispiel:

Ich möchte Artikel mit unterschiedlichen Knoten in zwei Spalten anzeigen. Dies kann nur in Spalten unterteilt werden gleicher Knoten, was zwangsläufig etwas umständlich erscheint.

Im Folgenden werde ich meine Lösung als Referenz für die Schüler aufschreiben. Zunächst muss ich klarstellen, dass die Funktion nur erfüllt werden kann, der Algorithmus jedoch nicht unbedingt der beste ist, da ich nicht sehr gut darin bin Ich bin mit DEDECMS-Code vertraut und habe ihn noch nicht sorgfältig studiert und hoffe, dass jeder ihn versteht!

Schritt 1:

Dateispeicherort: {include/inc_archives_view.php}

Der Code lautet wie folgt:

//广告标记
//-----------------------
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")));
}

Einführung: {Fügen Sie ein Thema hinzu unter dem Werbe-Tag-Logo}damit die spezielle Artikellistenseite das Specnote-Tag erkennen kann

Schritt 2:

Dateispeicherort: {include/inc_channel_unit.php}

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

Einführung: Definition der $pecrule-Variable hinzugefügt

Schritt 3:

Dateispeicherort: {include/inc_channel_unit.php}

Der Code lautet wie folgt:

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

Einführung: Fügen Sie hier den Satz $this->specrule = $fvalue; hinzu, um die Notizfelddaten der Addonspec-Tabelle zu erhalten

Dateispeicherort: {include/inc_channel_unit.php}

Der Code lautet wie folgt:

//获得专题文章的列表
//--------------------------------
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;
}

Einführung: Es gibt einige kleine Änderungen, die durch einen eigenen Vergleich deutlich werden, sodass es keine weiteren geben wird zittern hier

Schritt 5:

Anleitung: Das ursprüngliche {dede:field name='note'/}-Tag ist ungültig. Wenn Sie es verwenden möchten, ändern Sie bitte den vierten Teil selbst . .

Ganz einfach;

Fertig!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die spezielle Vorlage 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