Seite 1 von 2

If Bedingungen in Templates

Verfasst: 03.07.2012 19:54
von timotheus
Hola Gemeinde :),

ich hab mal wieder eine Frage. Welche If Bedingungen gibt es bei phpbb?

Hintergrund ist, dass ich im Footer ein Script habe, welches nicht in der suche, Anmeldung/Registrierung oder so ausgeführt werden soll. Allerdings auch nicht in viewtopic...#unread

Z.B.

Code: Alles auswählen

<!-- IF U_PRINT_TOPIC -->
code balbla..
<!-- ENDIF-->
Funktioniert schon ganz gut. So wird der Code aber nur in der Beitragansicht angezeigt - logisch.

Gibt es ähnliche Bedingungen für Forum, Index, Galerie oder der Gleichen? U_PRINT_FORUM geht nicht?!

Oder wär es einfacher den eigentlichen Code dann nur in die diversen Hauptdateien zu schreiben (viewtopic, viewforum, index u.s.w.)

Hoffe ihr habt ne Idee.

Danke
Timotheus

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:06
von WileCoyote
In dem von dir angegeben Beispiel wird dein Script nur ausgeführt, wenn auf der Seite, auf der du dich gerade befindest die Bedingung U_PRINT_TOPIC erfüllt ist. Im Normallfall sollte das nur in der Themenansicht der Fall sein. Daher wäre es besser, wenn du im Footer (bezogen auf dein Beispiel) z.B folgende IF-Abfrage verwendest:

Code: Alles auswählen

<!-- IF not ($_SERVER['SCRIPT_NAME'] == '/ucp.php' or $_SERVER['SCRIPT_NAME'] == '/search.php' or $_SERVER['SCRIPT_NAME'] == '/viewtopic.php') -->
<Ausführung deines Scripts>
<!-- ENDIF -->

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:10
von Miriam

Code: Alles auswählen

<!-- IF not ($_SERVER['SCRIPT_NAME'] == '/index.php' or $_SERVER['SCRIPT_NAME'] == '/viewforum.php' or $_SERVER['SCRIPT_NAME'] == '/viewtopic.php') -->
    <Ausführung deines Scripts>
    <!-- ENDIF -->
Bist Du sicher?

Sollte es nicht eher so aussehen:

Code: Alles auswählen

<!-- IF SCRIPT_NAME == "portal" -->bla bla <!-- ENDIF -->
Lesestoff:
http://wiki.phpbb.com/Global_Template_Variables
http://wiki.phpbb.com/Tutorial.Template_syntax

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:17
von WileCoyote
Ups ich hatte vergessen etwas zu ändern, damit es zu seinem Beispiel passt. Ansonsten bin ich mir ziemlich sicher, dass das paßt. Das Script soll nicht ausgeführt werden, wenn man bei der Anmeldung oder Registrierung ist, sich in der Suche und oder der Themenansicht befindet. Auf alle restlichen Seiten soll es ausgeführt werden.

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:33
von Miriam
Ich habe das inhaltlich verstanden. Wunderte mich nur über das hier, also daß Server-Variablen direkt im Template eingebaut werden könen: $_SERVER['SCRIPT_NAME']. Und es klappt tatsächlich. :o
Wieder was dazu gelernt.

Edit:
Irgendeinen Haken gibt es doch immer, wenn man sich nicht an die phpBB3 Vorgaben hält: Bei Aufruf in einem Unter-Verzeichnis, paßt das so nicht, mit SCRIPT_NAME als Template-Variable schon.
(klick)

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:51
von timotheus
Danke euch allen.

Klappt wunderbar, habs jetzt noch ein bissl angepasst. Und füge einfach alle Seiten ein, in denen das Script ausgeführt werden soll ein. Ist einfacher als andersrum, so wie WileCoyote es verstanden hat ;). Hab mich aber auch blöd ausgedrückt.

Code: Alles auswählen

<!-- IF ($_SERVER['SCRIPT_NAME'] == '/index.php' or $_SERVER['SCRIPT_NAME'] == '/neueSeite.php' ) -->
Auf jedenfall danke euch allen.

Eine kleine Frage noch - Wie kann ich jetzt die viewtopic.php...#unread wieder ausschließen?

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 20:52
von WileCoyote
Miriam hat geschrieben:Irgendeinen Haken gibt es doch immer, wenn man sich nicht an die phpBB3 Vorgaben hält: Bei Aufruf in einem Unter-Verzeichnis, paßt das so nicht, mit SCRIPT_NAME als Template-Variable schon.
Ich habe auch schon öfter mal mit SCRIPT_NAME Probleme gehabt. Daher bevorzuge ich es im Prinzip, eigene, an die Situation angepaßte Switches z.b. in der functions.php (je nachdem ob ich den Switch global benötige oder nicht) zu definieren. Schneller und mit weniger Aufwand geht es halt mit den angeführten Beispiel(en) direkt in der Template-Datei.
timotheus hat geschrieben:Eine kleine Frage noch - Wie kann ich jetzt die viewtopic.php...#unread wieder ausschließen?

Code: Alles auswählen

<!-- IF ($_SERVER['SCRIPT_NAME'] == '/index.php' or $_SERVER['SCRIPT_NAME'] == '/neueSeite.php') and not $_SERVER['SCRIPT_NAME'] == '/viewtopic.php' -->

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 21:03
von timotheus
WileCoyote :),

so fliegt doch aber die gesamte viewtopic wieder raus ich will ja nur, wenn #unread hinten dran hängt...?! Geht das überhaupt?

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 21:08
von WileCoyote
timotheus hat geschrieben: Geht das überhaupt?
Nein, weil dazwischen die Foren- und Themen-ID fehlen würde. Das müßte man mit viel mehr Aufwand über die functions.php lösen.

Re: If Bedingungen in Templates

Verfasst: 03.07.2012 21:21
von timotheus
OK wo kann ich mich denn da reinlesen, hast du evtl. noch n link, dann geb ich auch Ruhe fürs Erste ;).

Aber nochmals Danke euch.