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
mad-manne hat geschrieben:Hatte ich das nicht schon längst beschrieben ??
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 :roll: :cry:

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 :roll: :cry:
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 :o
Den verlinkten Artikel zur switch-Anweisung hast du doch gelesen :roll:

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 ;)