Seite 2 von 3

Verfasst: 15.10.2008 14:47
von Balint
Weil ich eine Klammer vergessen habe wegzunehmen:

Code: Alles auswählen

<!-- IF $_SERVER['QUERY_STRING'] == 'i=166' -->
ich finde die dazugehörige Doku für phpBB3 nicht mehr... :-(

Verfasst: 16.10.2008 03:19
von issjut
hätte ich ja selbst auch sehen können -.-

Ohne klammer geht es natürlich!

In einigen Bereichen kommen da ja ganz schön lange "conditional comments" zusammen ;-)

Hier mal ein Beispiel für meinen Forenbereich:
(und das ist noch nicht das "längste")^^

Code: Alles auswählen

<!-- IF basename($_SERVER['SCRIPT_NAME']) == 'index.php' or basename($_SERVER['SCRIPT_NAME']) == 'viewforum.php' or basename($_SERVER['SCRIPT_NAME']) == 'viewtopic.php' or basename($_SERVER['SCRIPT_NAME']) == 'search.php' or $_SERVER['QUERY_STRING'] == 'i=main&mode=bookmarks' or $_SERVER['QUERY_STRING'] == 'i=main&mode=subscribed' or $_SERVER['QUERY_STRING'] == 'i=main&mode=drafts' -->
Es gibt leider noch ein paar Links mit denen ich Schwierigkeiten habe. In der Regel die, wo die "Endung" variabel ist.

Hier mal ein paar Beispiele:

1. z.B. beim betrachten von PN's

Code: Alles auswählen

ucp.php?i=pm&mode=view&f=0&p=4457
Endung ergibt sich aus dem Ordner und der PN ID

2. z.B. bei m Erstellen der Gallery-Alben

Code: Alles auswählen

ucp.php?i=gallery&mode=manage_albums&action=edit&album_id=6
Hier wechselt am Ende jeweils die Album ID

Außerdem bei allen Links die z.B. eine USER_ID am Ende haben

Code: Alles auswählen

memberlist.php?mode=profile_views&u=53

Code: Alles auswählen

memberlist.php?mode=viewprofile&u=53
Variablen wie {USER_ID} funktionieren ja leider nicht in den "conditional comments"


Vielleicht hast Du ja dafür auch noch eine Idee.

Verfasst: 16.10.2008 14:28
von DerPate
Ich würde bei Links mit variabler Endung einfach den Wert TRUE in der php-Datei setzen und dann mit den "normalen" Template-Switches arbeiten, so wie du es ursprunglich geplant hattest. Geht bestimmt auch anders, aber da fehlts mir leider am know-how :wink:

Verfasst: 21.10.2008 01:07
von DerPate
Nabend,

ich hatte nicht vor, das Thema abzuwürgen, alles lasst euch von mir nicht aufhalten .... ich lese wie eh und je gern mit und lerne ... 8)
issjut hat geschrieben:Variablen wie {USER_ID} funktionieren ja leider nicht in den "conditional comments"
... aber, Variablen kannt du auch in "conditional comments" verwenden, die Frage ist, macht es Sinn. In der Regel willst du ja kaum, dass zb der Home-Link nur bei einer bestimmten USER_ID rot eingefärbt wird (um bei deinem Bsp. zu bleiben). Meist soll es ja für alle USER_IDs gelten, die sich auch einer bestimmten Seiten in einem bestimmten Seitenbereich befinden.

Bsp. das es funktioniert ist zB die index_body.html ... oder recht einfach und verständlicher (und für meine Zwecke total schwachsinnig, wie ich gerade feststellen muss :D ) ist zb das:

Die Variable kommt zB aus

Code: Alles auswählen

	$template->assign_block_vars('itemsloop', array(
		...
		'ITEM_SLOT'					=> $item['slot'],
		...
				));
... und im Template kann ich dann Späßle wie das hier machen ...

Code: Alles auswählen

	<!-- BEGIN itemsloop -->
	<!-- IF itemsloop.ITEM_SLOT == 0 or itemsloop.ITEM_SLOT == 1 or itemsloop.ITEM_SLOT == 14 -->
Nunja, mehr dazu gibts noch bei http://wiki.phpbb.com/Template_Syntax#C ... structures

Zurück zum Thema.
Ich würde es folgendermaßen machen, bzw mache bei mir so:

Generell ... die Abfrage nach 'QUERY_STRING' oder 'SCRIPT_NAME' ist nett, wenn man eine Seiten bzw URLs ohne weitere Optionen hat, aber sobald Unterseiten vorhanden sind oder die 'Template-Schalter an mehreren Stellen gesetz werden sollen, artet es ganz schnell in vielen bzw sehr langen Codezeilen aus. Von daher ist er m.M. nach einfacher und vorallem übersichtlicher die betroffenen Datein einzeln anzupassen, denn i.d.R ist pro Schalter nur eine Zeile hinzuzufügen.

(Die Änderungen sind ja einmalig, also nicht verwechseln mit den 10 anzupassenden Headern, die du JE Änderung wieder ändern müsstest!!!)

Bsp. deine Bereiche und Unterseiten

Trennung nach Bereichen (zB Header-Menü):
  • "HOME-Schachter" in den allg. Templat-Block der php-Dateien
  • viewtopic.php?f=22&p=15#p15
  • viewforum.php?f=9

Code: Alles auswählen

'S_NAV_HOME'		=> true,
Trennung nach Unterbereich (zB Navi-Menü)
  • "SETTING_SUB-Schachter" in die $id-Abfrage der php-Dateien
  • ucp.php?i=pm&mode=view&f=0&p=4457
  • ucp.php?i=zebra&mode=friends

Code: Alles auswählen

'S_NAV_SETTING_SUB'	=> true,
Trennung nach Unterbereich (zB eine Template-Variable für mehrere Inhalte )
  • "SETTING_SUBMODE-Schachter" in die $mode-Abfrage der php-Dateien
  • ucp.php?i=zebra&mode=ignored
  • ucp.php?i=zebra&mode=friends

Code: Alles auswählen

'S_NAV_SETTING_SUBIGNORED'		=> true,
'S_NAV_SETTING_SUBFRIENDS'		=> true,
Der Template Part ... hauptsächlich für die bessere Übersicht kürzen wir das ganze und verschieben wir unsere Änderung in unsere css-Datei ... aus

Code: Alles auswählen

<strong><!-- IF NAV_HOME --><span style="color:#FF0000"><!-- ENDIF -->HOME</strong><!-- IF NAV_HOME --></span><!-- ENDIF --></strong>
machen wir

Code: Alles auswählen

<strong>HOME <!-- IF S_NAV_HOME -->class="makeitred"<!-- ENDIF --></strong>
Den Rest machen wir über die css-Datei ... 1x "makeitred" definieren et voila ... ein recht flexibel, unabhängig voneinadner steuerbarer CSS-Schalter der sich eigentlich überall einbinden lässt;)

*edit: Rest gelöscht weils nicht funtioniert wie ich dachte ...*

Soooo ... geschafft, nach +5 Jahren Fornmitglieschachft musste nun wenigsten mal ein einziger, hoffentlich, hilfreich Beitrag her :D

Verfasst: 21.10.2008 23:08
von issjut
Vielen Dank DerPate,

ich empfinde Deinen Beitrag als überaus Hilfreich!

Könntest Du mri vielleicht noch ein Anwendungsbeispiel für die sumodes geben?

Nemen wir mal die ucp.php

Ich möchte nun also das der Bereich MAIL unter anderem dann rot leuchtet, wenn diese Seite aufgerufen wird!

/ucp.php?i=pm&mode=compose

Was genau hast du hierfür in der ucp.php geändert?

Edit:
Wäre das überhaupt die ucp.php? Ich könnte doch auch einfach in der includes/ucp/ucp_compose.php unter
$template->assign_vars(array(
'S_NAV_MAIL' => true,
eintragen?

Edit2:
Hab es mal versucht, das klappt auch! Aber vielleicht gibt es hier doch Nachteile gegenüber Deiner Variante. Den Vorteil den ich sehe, das ich im Template wirklich nur mit EINER .... Arbeiten brauch.... z.B. für den MAIL-Abschnitt:
<!-- IF S_NAV_MAIL -->
und den Wert True eben dann in alle php dateien einfüge die den Bereich Mail betreffen.

Verfasst: 22.10.2008 00:36
von DerPate
issjut hat geschrieben: Edit2:
Hab es mal versucht, das klappt auch! Aber vielleicht gibt es hier doch Nachteile gegenüber Deiner Variante. Den Vorteil den ich sehe, das ich im Template wirklich nur mit EINER .... Arbeiten brauch.... z.B. für den MAIL-Abschnitt:
<!-- IF S_NAV_MAIL -->
und den Wert True eben dann in alle php dateien einfüge die den Bereich Mail betreffen.
Genau so war es eigentlich gedacht :)
Die ucp-Links in den Beispielen benzuten war natürlich bissl blöd, da es eine ucp.php ja so nicht gibt.

Mit den Untermenüs ist vll zu umständlich beschrieben. Dort wo php-seitig der Seiteninhalt geändert wird lässt sich ja "nebenbein" noch ein Schalter fürs template über geben (muss ja nicht unbeding nur true od false sein) ...

Code: Alles auswählen

		switch ($mode)
		{
			case 'events':
Deinen Schalter setzt du innhalb den case-Blöcke die du "gruppieren" willst, gibts den Schalten einen eigenen Name für und jutissts :D

Andere Idee wären variable id, class oder sonstige Tags wie tmpl: class="{MYCSS}" , php: 'MYCSS' => 'inbereichxyz' an entsprechender Stelle ... aber das ist ein anderes Tema.

Für heut reichts ... gut nacht.

Verfasst: 22.10.2008 16:01
von issjut
pühhh.. fertig! Alles angepasst und bearbeitet! Hat doch länger gedauert als ich dachte, aber ist ja ne einmalige Arbeit gewesen^^

Danke nochmal an Euch für die Hilfe!

Eine kleine Frage hätte ich da aber doch noch:

Hat jemand ne idee wie mal eine art default-anzeige einrichten könnte?
Also einen "Inhalt" der immer dann angezeigt wird, wenn kein anderes Kriterium zutrifft.

Verfasst: 22.10.2008 16:25
von DerPate
Für die Default-Anzeige den Schalter einfach im "Default-Block" setzen ... ;)

Code: Alles auswählen

         dafault:
                  SCHALTER HIER!
         break:
Edit: falls es den default-Block nicht gibt einfach selbst erstellen oder den Schalter da setzen, wo die allgemeinen Template-Variablen gesetzt werden.

Mfg

Verfasst: 23.10.2008 12:18
von issjut
ich glaube das bewirkt nicht ganz das was ich gerne möchte.
Mal nen Beispiel:

Ich befinde mich im Ordner posteingang und lösche eine Nachricht. Bevor die Nachricht tatsächlich gelöscht wird, muss ich das ganze ja noch mit Klick auf "JA" bestätigen. Zu diesem Zeitpunkt fehlt nun also auf der linken Seite meine Navigation, weil ich mich ja sozusagen im Nirgendwo befinde.

An dieser Stelle hätte ich also gerne ne Default-Navi.

Selbe Sache bei vielen anderen Meldungen (Wartezeiten): Ihr Profil wurde aktualisiert, sie wurden Erfolgreich eingeloggt, Der Beitrag wurde erfolgreich gelöscht, usw...

würde ja dann bedeuten, dass ich für jede php.Datei nochmal einen defaultwert festlegen müsste :(

Verfasst: 12.11.2008 18:32
von DerPate
Da muss ich vorerst passen ... hab das gleiche "Problem" bei mir ... wenn sich am Wochenende Zeit findet, schau ich gern mal.