Seite 2 von 3
Verfasst: 22.11.2006 14:08
von andreasOymann
probier mal folgendes:
Code: Alles auswählen
$template->set_filenames(array(
'body' => 'viewforum_body.tpl')
);
if ( $forum_id == 1 )
{ $template->set_filenames(array(
'body' => 'viewforum_body2.tpl')
);
}
if ( $forum_id == 2 )
{ $template->set_filenames(array(
'body' => 'viewforum_body3.tpl')
);
}
Damit sollte es immer klappen.
A.
Verfasst: 22.11.2006 14:13
von nickvergessen
so ich habs jetzt doch noch hinbekommen.
Wenn ein Thema in einem anderen Style dargestellt werden soll:
FINDE:
Code: Alles auswählen
$template->set_filenames(array(
'body' => 'viewtopic_body1.tpl')
);
Ersetzte mit:
Code: Alles auswählen
if ( $topic_id == 1 ) {
$template->set_filenames(array(
'body' => 'viewtopic_body1.tpl')
);
}
// bei bedarf sonst komplett weg lassen bis einschließlich dem nächsten//:
elseif ( $topic_id == 5 ) {
$template->set_filenames(array(
'body' => 'viewtopic_body2.tpl')
);
}
//
else {
$template->set_filenames(array(
'body' => 'viewtopic_body.tpl')
);
}
wenn eine Kategorie anders dargestellt werden soll:
Finde in viewforum.php:
Code: Alles auswählen
$template->set_filenames(array(
'body' => 'viewforum_body1.tpl')
);
Ersetzte mit:
Code: Alles auswählen
if ( $forum_id == 1 )
{ $template->set_filenames(array(
'body' => 'viewforum_body1.tpl')
);
}
// bei bedarf sonst komplett weg lassen bis einschließlich dem nächsten//:
elseif ( $forum_id == 2 )
{ $template->set_filenames(array(
'body' => 'viewforum_body2.tpl')
);
}
//
else {
$template->set_filenames(array(
'body' => 'viewforum_body.tpl')
);
}
Die Angabe: 'body' => '
viewforum_body.tpl'
verweist auf die jeweilige Style-Datei. die muss vorhanden sein.
Die Angabe: if ( $forum_id ==
2 )ist die Foren oder Topic ID (einfach aufrufen und in der Linkleiste nachgucken.
(Ich werd das vllt noch als bessere Anleitung schreiben.)
Verfasst: 22.11.2006 15:50
von mgutt
So ist richtig.
Man sollte bei der Struktur if, else if und else ohne Switches klar kommen. Wenn es aber mehrere "else if" werden, dann sollte man Switches bevorzugen. Alleine wegen der Übersichtlichkeit.
Weiterhin sollte man nicht if und dann wieder if machen, wenn die zu prüfenden Variable gleich ist bzw. ENTWEDER ODER klar ist. Sonst prüft das Script immer alle Schleifen neu, was ja Unsinn wäre.
Dann: Immer das wahrscheinlichste an den Anfang. Also wenn forum_id == 1 in 90% der Fälle vor kommt, dann sollte das an den Anfang, weil dann der Rest der Schleife nicht mehr überprüft wird.
Und mein letzter Tipp: Es macht mehr Sinn wenn man Schleifen so macht:
Code: Alles auswählen
$var = wert;
if ( GET == 1 )
{
$var = wert1;
}
else if ( GET == 2 )
{
$var = wert2;
}
So braucht man die letzte else Bedingung nicht und spart Rechenzeit.
Gruß
Verfasst: 23.11.2006 15:35
von nickvergessen
mgutt hat geschrieben:Es macht mehr Sinn wenn man Schleifen so macht:
Code: Alles auswählen
$var = wert;
if ( GET == 1 )
{
$var = wert1;
}
else if ( GET == 2 )
{
$var = wert2;
}
und wie mach ich das in diesem speziellen Fall?
Verfasst: 23.11.2006 15:42
von mad-manne
nickvergessen hat geschrieben:und wie mach ich das in diesem speziellen Fall?
Hatte ich das nicht
schon längst beschrieben ??
Gruss,
Manne.
Verfasst: 23.11.2006 15:45
von nickvergessen
Ops, ja eigentlich schon,
aber jetzt musst du mir noch verraten, wie ich die case den einzelnen forum_id 's zuordne,
Oder ist das mit dem switch so,
das der case 1 für das Forum mit der ID 1 gilt, case 2 für Foren ID 2 usw. ?
wenn ja, was wird dann generell zugeordnet?
EDIT: ok ich denke mal dafür ist der default Eintrag da.
Damit hat sich das dann erledigt.
Verfasst: 23.11.2006 15:56
von mad-manne
Hier kannst du nicht nur nachschauen, wie die
switch-Anweisung funktioniert ...
Gruss,
Manne.
Verfasst: 23.11.2006 16:17
von nickvergessen
so da hätten wir jetzt nur das Problem,
dass wenn ich folgendes benutze
Code: Alles auswählen
switch ($topic_id)
{
case 1:
$template->set_filenames(array('body' => 'viewtopic_body_gb.tpl'));
break;
case 7:
$template->set_filenames(array('body' => 'viewtopic_body_quotes.tpl'));
break;
default:
$template->set_filenames(array('body' => 'viewtopic_body.tpl'));
}
macht er das nur für den case 1
um die Wirkung bei case 7 zuerreichen, muss ich alle bis dahin auftrettenden case (2, 3, 4, 5 und 6) auch definieren.
dadurch entsteht ein ziemlich langer Quellcode
Weißt du da auch Abhilfe?
EDIT: ok man sollte schon topic_id abfragen wenn man am Topic anbinden will

Verfasst: 23.11.2006 16:56
von mad-manne
nickvergessen hat geschrieben:EDIT: ok man sollte schon topic_id abfragen wenn man am Topic anbinden will

Hmmm ....
soll das heissen, du hast jetzt rausgefunden, wie es geht ?
Wie du auf die Idee kommst, man müsse "alle Fälle dazwischen" behandeln, kann ich mir nicht erklären

Den verlinkten Artikel zur switch-Anweisung hast du doch gelesen
Gruss,
Manne.
Verfasst: 23.11.2006 17:01
von mgutt
Ja, aber bei php.net steht das immer ab 0 und aufwärts. Die hätten ruhig mal ein Beispiel mit 7 oder 'wurst' oder so machen können
