ssi-include verändern
Dave
- php
0 Sven Schrodt0 Dave0 Sven Schrodt0 Orlando
0 mehmet0 Dave
0 Michael Schröpl0 Orlando
Hallo,
diesmal habe ich ein kompliziertes Problem:
Ich habe mein komplettes Menu - etwa 50 Zeilen - in eine txt-datei eingebunden, und diese per ssi-include eingeügt in jede seite. Ich will aber, dass die jeweils besuchte Seite mit class="active" (bereits definiert, keine sorge) hervorgehoben wird. Kann mn das ins include einfügen? Und wie?
Danke für alle Antworten
Dave
Hallo Dave,
Es handelt sich doch sicherlich um, Links? Warum dann eine neue Klasse ?
Benutze doch die Pseudo-Formate des <a>-Elementes..
http://selfhtml.teamone.de/css/eigenschaften/pseudoformate.htm#link_visited_hover_active_focus
Gruss Sven
Hi
Es handelt sich doch sicherlich um, Links? Warum dann eine neue Klasse ?
Benutze doch die Pseudo-Formate des <a>-Elementes..
http://selfhtml.teamone.de/css/eigenschaften/pseudoformate.htm#link_visited_hover_active_focus
Es geht darum, dass auf der neuen Seite die Links anders angezeigt werden. Machst du das mit einer Pseudo-Klasse, dann wird der Link farblich nur verändert, nachdem du geklickt hast und bis die neue Seite geladen ist.
Dave
Hallo,
Es geht darum, dass auf der neuen Seite die Links anders angezeigt werden. Machst du das mit einer Pseudo-Klasse, dann wird der Link farblich nur verändert, nachdem du geklickt hast und bis die neue Seite geladen ist.
..das verstehe ich nicht!
Sven
Hi Dave,
Es geht darum, dass auf der neuen Seite die Links anders angezeigt werden. Machst du das mit einer Pseudo-Klasse, dann wird der Link farblich nur verändert, nachdem du geklickt hast und bis die neue Seite geladen ist.
nein, das stimmt nicht. Was du meinst, ist ein M$IE-Bug. Gute Browser wechseln die Farbe auch ohne Reload sofort und wissen, wie lange ein Link :active sein kann...
LG Orlando
Hallo,
diesmal habe ich ein kompliziertes Problem:
Ich habe mein komplettes Menu - etwa 50 Zeilen - in eine txt-datei eingebunden, und diese per ssi-include eingeügt in jede seite. Ich will aber, dass die jeweils besuchte Seite mit class="active" (bereits definiert, keine sorge) hervorgehoben wird. Kann mn das ins include einfügen? Und wie?
Danke für alle Antworten
Dave
also, normalerweise müsste das gehen, dass du du das in die include-datei einfügen kannst.
häng doch bei jedem link z.B. einfach ein "?site_id=home" an.
bei deinem menü sagst du dann
if( $site_id == "home" ){
echo "class="active"";
}
und das bei jedem menü-punkt.
hoffe, konnt dir ein wenig weiterhelfen.
häng doch bei jedem link z.B. einfach ein "?site_id=home" an.
bei deinem menü sagst du dann
if( $site_id == "home" ){
echo "class="active"";
}
und das bei jedem menü-punkt.
hoffe, konnt dir ein wenig weiterhelfen.
Das klingt als ob es funktionieren würde, aber wie kann ich das
if( $site_id...
...
...
in die links schreiben? Kommt das einfach in den Tag? Und funktioniert das denn auch in der SSI-Datei? (Ich frage nur so dumm weil ich noch noicht sehr vertraut mit PHP bin)
Danke
Dave
HI Dave,
Ich habe mein komplettes Menu - etwa 50 Zeilen - in eine txt-datei
eingebunden, und diese per ssi-include eingeügt in jede seite.
Ich will aber, dass die jeweils besuchte Seite mit class="active"
(bereits definiert, keine sorge) hervorgehoben wird. Kann mn das ins
include einfügen? Und wie?
schau Dir mal die Navigation von
http://www.schroepl.net/projekte/mod_gzip/
an. Das ist komplett via SSI gelöst.
Jedes Dokument ist eine SSI-Seite, welche die Navigation via "include
virtual" einbindet. (Laß Dich nicht von der Endung ".htm" irritieren.)
Die Navigation selbst ist aber auch wieder eine SSI-Seite!
Sie kann in Apaches XSSI bedingte Befehle (if-then-else) enthalten,
und sie kann Inhalte von Environment-Variablen abfragen. Und eine
dieser Variablen ist der Name des Dokuments, in welches die Navi-
gation eingebunden ist.
Jeder einzelne Button der Navigation ist also ein solches if-then-else:
<!--#if expr="${REQUEST_URI} = /encoding.htm/" -->
<p>Content-Encoding</p>
<!--#else -->
<a title="Komprimierung von HTTP-Inhalten durch Content-Encoding" href="encoding.htm">Content-Encoding</a>
<!--#endif -->
Der SSI-Interpreter generiert also für jede Seite eine Navigation,
die genau an diese Seite angepaßt ist: Derjenige Button, der ein Link
auf das Dokument selbst wäre, wird in <p> eingebunden (was wiederum
mit CSS formatiert ist), alle anderen mit <a>.
Aber alles aus einer einzigen SSI-Datei! (Naja, in Wirklichkeit sind es
zwei - eine deutsche und eine englische, via Content Negotiation ...)
Viele Grüße
Michael
Hi Michael,
<!--#if expr="${REQUEST_URI} = /encoding.htm/" -->
<p>Content-Encoding</p>
<!--#else -->
<a title="Komprimierung von HTTP-Inhalten durch Content-Encoding" href="encoding.htm">Content-Encoding</a>
<!--#endif -->
faszinierend, ich habe das jetzt mal ausprobiert. Allerdings klappt es leider nicht mehr, wenn ich das obige Konstrukt wiederum in eine eigene Datei auslagern und per SSI einbinden will - der Server arbeitet die Anweisungen in der Include-Datei natürlich nicht ab... Das ist eigentlich schade, denn so könnte man recht einfach für die gesamte Site die Navigation in eine einzige Datei auslagern.
Vielleicht sollte ich mich wirklich mal mehr mit Perl beschäftigen, ein kleines Script sollte das auch schaffen ;)
LG Orlando
Hi Orlando,
faszinierend, ich habe das jetzt mal ausprobiert.
Allerdings klappt es leider nicht mehr, wenn ich das obige Konstrukt
wiederum in eine eigene Datei auslagern und per SSI einbinden will
- der Server arbeitet die Anweisungen in der Include-Datei natürlich
nicht ab...
Diese Include-Datei muß selbst natürlich auch wieder eine SSI-Datei
sein! Meines Wissens kann man das ziemlich tief schachteln.
(Irgendwo schlägt dann vermutlich ein sanity check zu, um eine Endlos-
schleife im SSI-Handler zu verhindern - aber bis dahin ist viel Platz. ;-)
Ich weiß allerdings nicht, ob der REQUEST_URI nicht irgendwann verloren
geht ... ich habe noch nicht mehr als zwei Stufen ausprobiert.
Das ist eigentlich schade, denn so könnte man recht einfach für die
gesamte Site die Navigation in eine einzige Datei auslagern.
Genau das ist die Idee dabei ... irgendwann werfe ich meine Frameset-
Halde auf den Müll. (Leider ist die Zahl der anzupassenden Dokumente
inzwischen vierstellig ...)
Vielleicht sollte ich mich wirklich mal mehr mit Perl beschäftigen,
ein kleines Script sollte das auch schaffen ;)
SSI ist performanter. Und für das hier muß es eigentlich ausreichen.
Viele Grüße
Michael
Hi Michael,
- der Server arbeitet die Anweisungen in der Include-Datei natürlich
nicht ab...
Diese Include-Datei muß selbst natürlich auch wieder eine SSI-Datei
sein! Meines Wissens kann man das ziemlich tief schachteln.
Ach, das war's - eigentlich logisch. Es funktioniert jetzt prächtig, ich werde die nächste Version meiner Seiten garantiert so aufbauen - einfacher geht's ja nicht mehr :)
(Irgendwo schlägt dann vermutlich ein sanity check zu, um eine Endlos-
schleife im SSI-Handler zu verhindern - aber bis dahin ist viel Platz. ;-)
Eben, ich dachte, deswegen wäre es nicht möglich. Muss ich eben aufpassen, dass mir der Hoster wegen rekursiver Includes nicht eine auf den Deckel gibt ;)
Ich weiß allerdings nicht, ob der REQUEST_URI nicht irgendwann verloren
geht ... ich habe noch nicht mehr als zwei Stufen ausprobiert.
Das kommt auf einen Versuch an, ich werde am Wochenende etwas experimentieren.
Genau das ist die Idee dabei ... irgendwann werfe ich meine Frameset-
Halde auf den Müll. (Leider ist die Zahl der anzupassenden Dokumente
inzwischen vierstellig ...)
Du kannst dir wenigstens mit Scripts helfen ;)
Vielleicht sollte ich mich wirklich mal mehr mit Perl beschäftigen,
ein kleines Script sollte das auch schaffen ;)
SSI ist performanter. Und für das hier muß es eigentlich ausreichen.
Das kann ich bestätigen, danke!
LG Orlando
Hi Orlando,
Ach, das war's - eigentlich logisch. Es funktioniert jetzt
prächtig, ich werde die nächste Version meiner Seiten garantiert
so aufbauen - einfacher geht's ja nicht mehr :)
Fein. "Wer braucht CMS; es gibt doch SSI?" ;-)
(Schreib doch mal einen Feature-Artikel darüber ...)
Eben, ich dachte, deswegen wäre es nicht möglich. Muss ich eben
aufpassen, dass mir der Hoster wegen rekursiver Includes nicht
eine auf den Deckel gibt ;)
Direkt rekursive INCLUDEs merkt der Apache sofort (gerade ausprobiert
Eine hart-codierte Grenze habe ich im Quelltext (die Neugier ... ;-)
eben gerade nicht entdecken können (wofür auch, wenn Rekursion erkannt
wird?).
Viele Grüße
Michael