Zur Boardunity Forenstartseite
  #1  
Alt 31.07.2004, 18:36
pat pat ist offline
Mitglied
 
Registriert seit: 07.2004
Beiträge: 14

Unterschiedliche TPLs je Kategorie laden


Hi

es ist wohl möglich, durch Änderung des PHP-Code dem System "beizubringen", dass je Kategorie jeweils ein anderes Artikel-Template geladen wird.

Kann jemand rasch sagen wo, das verkürzt die Zeit beim Suchen

Danke !
  #2  
Alt 31.07.2004, 19:39
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
Ist das nicht eine Standard-Funktion seit 1.2.5?
Also ohne jegliche Änderung des PHP-Codes?

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #3  
Alt 05.08.2004, 10:03
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
Mich würde das auch mal interessieren, wo das einzustellen ist. Im tpl-Verzeichnis ist doch nur eine article.tpl zu finden.

grüße
denis

  #4  
Alt 05.08.2004, 13:37
Mitglied
 
Registriert seit: 12.2003
Beiträge: 43
erstelle mal testweise eine datei namens "cat_".$catid.".tpl" ...

  #5  
Alt 05.08.2004, 14:59
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
und dann?

  #6  
Alt 05.08.2004, 22:54
Mitglied
 
Registriert seit: 12.2003
Beiträge: 43
hm, ja, habe es gesehen. zeigt zwar die seite an, aber die variablen kann er nicht ersetzen ...

  #7  
Alt 06.08.2004, 07:59
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
er zeigt die seite an?
was hast du genau gemacht?

mein ansatz wäre, dass man herausfindet wo die templates der kategorien aufgerufen werden. dort könnte man den aufruf der category_head.tpl ersetzen durch category_".$catid."_head.tpl.
man müßte dann für jede anders aussehende kategorie ein template anlegen (zb. category_20_head.tpl). falls das template nicht exisitert, dann müßte das "standard-template" benutzt werden (category_header.tpl).

was meinst du?

vielleicht hat dragonmaster eine idee?

grüße
denis

  #8  
Alt 06.08.2004, 11:38
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
ok, habe neue Erkenntnisse und eine Lösung gefunden.

Dragonmaster hat recht, das System bietet von Hause aus eine individuelle Kategorieansicht an. Dazu einfach im Templateordner beliebige Files anlegen; Beispiel: cat_4.tpl
Dabei wird diese Datei für die Kateogrie 4 geladen. Nachteil beim ersten Test war, dass die Variable {name} nicht mehr interpretiert wurde und die Artikel dieser Kategorie nicht sichtbar waren.

Ich habe diesen Ansatz für die category_head.tpl umgesetzt. {name} wird erkannt und Artikel angezeigt. Dazu habe ich in der system.class.php die folgende Änderung gemacht:

alt:

$return = $GLOBALS['Template']->load('category_head', array('name' => $this->getcatname($id)));

neu:

if($GLOBALS['Template']->fileexists("category_head_".$id)){

$return = $GLOBALS['Template']->load('category_head_'.$id, array('name' => $this->getcatname($id)));

}
else {
$return = $GLOBALS['Template']->load('category_head', array('name' => $this->getcatname($id)));
}


Bei dieser Lösung müssen halt Templates der Art category_head_CATID".tpl erzeugt werden.

Viel Spass,
Denis

  #9  
Alt 30.08.2004, 22:13
pat pat ist offline
Mitglied
 
Registriert seit: 07.2004
Beiträge: 14
Hi Denis,

vielen Dank für den Hinweis. funktioniert wunderbar.
Ich bin noch etwas verwirrt über den Gebrauch der Vorlagen article.tpl und article_preview.tpl. Als Standard wird ja jede Artikel mit article_preview.tpl angezeigt. Im Artikel gibt es einen Link weiterlesen und ich sehe dann erst den ganzen Artikel. Ich würde nun gerne in Abhängigkeit der Kategorie auch unterschiedliche Artikel-Templates laden. Wo ist dies in der system.class.php einzustellen ? Ist dies der Bereich Startseite laden ?

Danke für die Hinweise.

pat

  #10  
Alt 31.08.2004, 22:00
pat pat ist offline
Mitglied
 
Registriert seit: 07.2004
Beiträge: 14
Ich habe mal versucht, in der funktion index() in der system.class.php eine Abfrage der Kategorie einzubinden. Es soll bei der Kategorie mit der ID 1 das klassische preview-Template angezeigt werden und bei allen anderen Kategorien das Artikel-Template.

Ich habe folgendes eingefügt:
<code>$id = isset($_GET['catid']) ? $_GET['catid'] : 0;
if($id==1) {
$return .= $GLOBALS['Template']->load('article', $result[$x]);
}
else
{$return .= $GLOBALS['Template']->load('article_preview', $result[$x]);
}
}

return $return;
}
</code>

Leider erhalte ich noch nicht das gewünschte Resultat. Es wird immer nur das Preview-Template angezeigt. Habe ich etwas übersehen ?! Ich bin mit dem Zusammenspiel der Funktionen noch nicht so vertraut..

Danke!

  #11  
Alt 01.09.2004, 09:38
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
das heisst du willst nur in der catid=1 eine artikelkurzübersicht haben. in allen anderen sollen die vollartikel untereinander angezeigt werden.

in diesem fall würde ich mal einen blick auf diese zeile der funktion category($id) werfen. aber alles ohne gewähr!!

$return .= $GLOBALS['Template']->load('article_preview', $result[$x]);

ich würde um diese funktion eine abfrage basteln

if($GLOBALS['Template']->fileexists("article_preview_".$id)){
$return .= $GLOBALS['Template']->load('article_preview_'.$id, $result[$x]);
}
else {
$return .= $GLOBALS['Template']->load('article_preview', $result[$x]);
}

Für dieses Beispiel kannst du für jede kategorie ein anderes template laden. für die catid=1 muss eine vorlage article_preview_1.tpl exisiteren. in dieser musst du dann mit den variablen eines vollartikels arbeiten.

wie gesagt, alles ohne gewähr...alles nur theorie. muss du selber testen.

grüße
denis

  #12  
Alt 01.09.2004, 14:33
Mitglied
 
Registriert seit: 07.2004
Beiträge: 28
ich habe ein ähnliches problem.

ich würde gerne 2 artikeln ein anderes template geben. dabei liegen diese artikel in zwei verschiedenen kategorieren, und seit dabei jeweils die startseiten der ruriken (#1) allerdings komme ich mit der cat_id.tpl und den oben geposteten änderungen in der systemclass auf keine zufriedenstellbare lösung.

weder {title}{name}{text}{preimg}{img} werden bei mir ausgelesen.

hat einer von euch nen tipp, wie ich da weiter vorgehen könnte?

  #13  
Alt 01.09.2004, 15:40
Mitglied
 
Registriert seit: 05.2004
Beiträge: 55
die oben beschriebenen ansätze sind auch für eine kategorieabhängige darstellung. in deinem fall muss zusätzlich eine artikelabfrage erfolgen. artID=....

  #14  
Alt 02.09.2004, 07:53
Mitglied
 
Registriert seit: 07.2004
Beiträge: 28
das kapiere ich ehrlich gesagt nicht.

die artid hat doch bei einem startseitenartikel nichts zu suchen, da die adresse ?page=cat&catid=57 (zum beispiel) ist. d.h. normalerweise müßte ich ja nur an den categorieid-namen.

dieses will er mir aber irgendwie nicht machen. bzw. werden die platzhalter {text} nicht geparst, und ich weiß ehrlich gesagt, nicht warum.

  #15  
Alt 02.09.2004, 20:41
pat pat ist offline
Mitglied
 
Registriert seit: 07.2004
Beiträge: 14
Hi Denis,

die Funktion ist tatsächlich geeignet um mein Vorhaben umzusetzen. Der Code funktioniert ! Danke!

Manko ist leider, dass im Template die Variable {text} scheinbar nicht geparst wird. Ein Artikel wird wohl in voller Länge nur korrekt über die den Link weiter dargestellt. Ich vermute, dass mir in der gewählten Funktion die Variable text noch nicht zur Verfügung steht.

Diese wäre dann in der Funktion aufzurufen und zur Verfügung zu stellen.

Gruss

Pat

  #16  
Alt 03.09.2004, 14:50
Mitglied
 
Registriert seit: 07.2004
Beiträge: 40
{text} wird deshalb nicht geparst, weil der entsprechende array in der function category() nicht definiert wird. du brauchst dazu lediglich in der variable $result der SELECT-liste ",text" hinzufügen und ein paar zeilen weiter unten in der for-schleife folgende zeile einfügen:
Code:
$result[$x]['text'] = Bbcode::encode($result[$x]['text']);
und schon sollte es funktionieren!

  #17  
Alt 04.09.2004, 13:26
pat pat ist offline
Mitglied
 
Registriert seit: 07.2004
Beiträge: 14
Danke,

ich hatte vergessen mir das SQL Statement näher nazushen. Die Erweiterung von $result hatte ich bereits vorgenommen.

So funktioniert es nun.

 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Foren einer Kategorie zuweisen Daniel Richter Programmierung und Datenbanken 7 06.09.2003 09:47






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24