Seite 1 von 3

overall_header - Anzeige versch. Inhalte je php Datei

Verfasst: 14.10.2008 04:02
von issjut
Hi Leute,

erstmal sorry für den beknackten Titel, aber es ist ziemlich schwer für die "Vorstellung" die ich habe eine kurze Beschreibung zu finden. Evtl bin ich hier im Style-Forum auch falsch, da es doch "ziemlich" in den php-Coding-Bereich geht - hab mich aber für dieses Forum entschieden, da es hier vielleicht auch noch andere Leute gibt, die eine Lösung interessieren könnte - ggf. bitte verschieben.

Worum geht es:
Ich habe auf meinem Board jede menge zusätzliche Seiten eingebaut- Da gibt es also neben dem FORUM in der overall_header.html noch zusätzliche Links wie HOME, MAP, POSTFACH, SETTING usw...

Außerdem hat jeder dieser Menüpunkte bei aufruf eine extra "Unternavigation" (Bei Mail z.b. Posteingang, Postausgang, usw)

Ziel:
Ich möchte nun als Erstes, dass je nach aufgerufener Seite (php-datei), der LINK in der overall_header die Farbe wechselt (also als Aktiv angezeigt wird)
Befindet man sich also im Posteingang oder Postausgang, so sollte oben der Link MAIL als aktiv (in dem Fall rot) angezeigt werden.
Außerdem sollte die entsprechende Unternavigation angezeigt werden.

Ein Teil der Lösung:
Ich habe mir nun überlegt das ganze durch Bedingungen zu lösen.

Beispiel:

Code: Alles auswählen

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

Code: Alles auswählen

<strong><!-- IF NAV_MAIL --><span style="color:#FF0000"><!-- ENDIF -->MAIL<!-- IF NAV_MAIL --></span><!-- ENDIF --></strong>
nun müsste ich nur noch in den jeweiligen php dateien die bedingung festlegen und im falle TRUE ans template zurückgeben.

Aber wie genau stelle ich das nun an und vor allen Dingen, wie mache ich das am einfachsten?

Ich müsste ja immerhin alle php dateien bearbeiten, die durch die links aufrufbar sind.
Vielleicht bin ich auch auf dem völlig falschen weg?!?

Ich habe mich übrigens für diese "Template Schlater" entschieden, da ja wie schon erwähnt zu jedem Menüpunkt in der overall_header.html auch eine unternavigation existiert.

Für MAIL z.b.:

Code: Alles auswählen

<!-- IF NAV_MAIL -->
<tr>
  <td width="150">
    <div id="navcontainer">
      <ul id="navlist">
        <li id="rot"><a href="#" id="current">Postbox</a></li>
	<li> <a href="{U_PRIVATEMSGS}">Posteingang</a> </li>
	<li> <a href="ucp.php?i=pm&folder=outbox">Postausgang</a> </li>
	<li> <a href="ucp.php?sid=&i=pm&folder=-1">Gesendete Mails</a> </li>
	<li> <a href="ucp.php?i=pm&mode=drafts">Mail Entw&uuml;rfe</a> </li>
      </ul>
      <br style="clear: both;">				  
    </div>
  </td>
</tr>
<!-- ENDIF -->
Dachte mir daher das wäre die beste Lösung!

Bisher habe ich es übrigens so gemacht, dass ich für jeden Bereich eine extra header datei erstellt habe.
Es gibt nun also eine home_header.html, eine mail_header.html, eine map_header.html usw

Ich bin es aber leid jede kleine Änderung in 10 verschiedenen Dateien zu machen. Außerdem leidet an dieser Lösung auch die Performance des Boards.

Wer sich das ganze mal anschauen möchte:
http://www.talkberlin.de
Username: testuser
PW: tester

(Also im grunde sollte die Lösung gensu so aussehen^^ nur eben später in EINER header-datei und nicht in ZEHN)

Kann mir da Jemand helfen?

Verfasst: 14.10.2008 12:17
von Balint
Hallo!

Der Ansatz mit den conditional comments ist genau richtig. Schau dich mal hier um, da wird mit

Code: Alles auswählen

<!-- IF basename($_SERVER['SCRIPT_NAME']) == 'index.php' -->
etc. gearbeitet.


Viele Grüße,
Bálint

Verfasst: 14.10.2008 12:32
von issjut
Vielen Dank für Deine Antwort!

Ist ja echt cool die Möglichkeit und erspart mir auch jede php datei zu bearbeiten :D Wenn ich das richtig verstandnen habe, dann heißt das also, dass ich z.b. für den Aufruf meiner HOME seite (start.php) folgenden Code in die overall_header einbauen müsste.

<!-- IF basename($_SERVER['SCRIPT_NAME']) == 'start.php' --> HOME in rot <!-- END IF -->

richtig verstanden?

In diesem Fall hätte ich allerdings das Problem, dass ich ja mehrere Dateien habe, welche z.b. den Link Home nutzen. Nehmen wir an ich habe 10 php Dateien bei denen Home rot leuchten soll, müsste ich dann 10 conditional comments arbeiten?

Verfasst: 14.10.2008 12:41
von Balint
Hallo!

Es geht auch z.B. so:

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' -->
(siehe verlinkte Seite)

Verfasst: 14.10.2008 12:46
von issjut
ok, dass sollte kein Problem sein!
Eine Sache hätte ich da allerdings noch. Es gibt ja auch php Dateien, welche z.b. verschiedene Modes nutzen. Nehmen wir z.b. mal die memberlist.php wo ich als Beispiel bei der Mitgliedersuche den Link SUCHE rot haben möchte, wenn man aber z.b. die Memberlist ohne suche aufruft, dann sollte der LINK COMMUNITY rot erscheinen. Hast du dafür auch eine Idee?

Also mir grault es sich da gerade vor der ucp.php wo ich die bereiche PROFIL, SETTINGS oder auch MAIL hätte :)

Kann ich die modes irgendwie mit angeben?

Verfasst: 14.10.2008 13:01
von Balint
Hallo,

ja,es gibt auch ein

Code: Alles auswählen

$_SERVER[QUERY_STRING]
Da müßte mal allerdings etwas finden, womit die evtl. drangehängte sid-Variable nicht beachtet wird. (Das Ganze natürlich dann ohne basename() anwenden.)


Viele Grüße,
Bálint

Verfasst: 14.10.2008 14:24
von issjut
hättest du da nen genaues Beispiel für mich?
Entschuldige bitte meine Unwissenheit aber in dem Gebiet bin ich dann wohl doch noch ein blutiger Anfänger ;-)

Wie mache ich es z.b. bei

/ucp.php?i=166

oder

/ucp.php?i=pm&folder=inbox

???

das wären jetzt z.b. zwei Ziele der Unternavigation MAIL

Verfasst: 14.10.2008 15:04
von Balint
Hallo!

Wie gesagt: wäre die "sid" nicht, könnte man es mit

Code: Alles auswählen

<!-- IF $_SERVER['QUERY_STRING']) == 'i=166' -->
versuchen. (Ungetestet).


Viele Grüße,
Bálint

Verfasst: 14.10.2008 17:41
von issjut
na dann werde ich mein Glück mal versuchen. danke dir erstmal!

Verfasst: 15.10.2008 14:38
von issjut
Balint hat geschrieben:Hallo!

Wie gesagt: wäre die "sid" nicht, könnte man es mit

Code: Alles auswählen

<!-- IF $_SERVER['QUERY_STRING']) == 'i=166' -->
versuchen. (Ungetestet).


Viele Grüße,
Bálint
Hallo Balint,

bin gerade dabei alles soweit umzustellen. Der oben angegebene Code gibt aber leider immer einen templatefehler. Hast Du eine Idee wieso?