Seite 1 von 1
link ausblenden wenn die seite anzeigt (z.B. index)
Verfasst: So 02.Apr, 2006 23:41
von Christian_N
Hallo,
da bin ich mal wieder ich möchte, wenn jemand auf "Forum" klickt und somit auf index.php ist das dann im Navigations Menü zwar noch "Forum" steht aber nicht mehr als Link.
habe in der page_header.php es so gemacht:
Code: Alles auswählen
'FORUM' => ( $HTTP_SERVER_VARS['REQUEST_URI'] ) ? '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>' : '<b>' . $lang['Forum'] . '</b>',
und in der *.tpl es mit {FORUM} ersetzt wo vorher <a hr....>{L_FORUM}</a> stand.
Es zeigt auch als Link an, egal auf welche Seite ich klick bleibts als Link wie es auch sein soll, so dann hab ich auf "Forum" mal geklickt zum testen, aber er zeigt den Link immer noch an statt "Forum" als Text (dick).
Da müsste was falsch sein, nur was?
Für hilfe wäre ich wie immer, sehr dankbar.
Gruß Chris
Verfasst: Mo 03.Apr, 2006 12:40
von AmigaLink
Der Ansatz ist auf jeden Fall schonmal richtig. Nur in der ausführung ist ein kleiner Fehler.

Und zwar prüfst du nur ob $HTTP_SERVER_VARS['REQUEST_URI'] einen inhalt hat und nicht welchen inhalt!
So wäre richtig:
Code: Alles auswählen
'FORUM' => ( preg_match('/index.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>' : '<b>' . $lang['Forum'] . '</b>',
Verfasst: Mo 03.Apr, 2006 12:44
von Christian_N
Oki danke werd ich mal ausprobieren

Hauptsache hatte schonmal den Ansatz richtig, tja lerne auch noch, PHP/MySQL

Danke nochmal - werd mich melden wenns geklappt hat.
P.S. beim Portal sieht es dann so aus?
Code: Alles auswählen
'HOME' => ( preg_match('/portal.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<a href="' . append_sid("portal.$phpEx") . '">' . $lang['Home'] . '</a>' : '<b>' . $lang['Home'] . '</b>',
oder muss dann das /i was inder phpEx. steht '/p' lauten? bzw. für was steht diese '/i' den? Danke für die erklärung schonmal.
Verfasst: Mo 03.Apr, 2006 12:49
von AmigaLink
Das i bewirkt das bei der Prüfung kein Unterschied zwischen Groß- und Kleinschreibung gemacht wird.
http://www.oxpus.de/viewtopic.php?t=3172
Verfasst: Mo 03.Apr, 2006 13:25
von Christian_N
Danke für die erklärung
Allerdings muss ich den code glaub ich änderen:
Code: Alles auswählen
'FORUM' => ( preg_match('/index.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>' : '<b>' . $lang['Forum'] . '</b>',
und zwar in:
Code: Alles auswählen
'FORUM' => ( preg_match('/index.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
Da er bei alle Seite, Portal, Mitgliederliste, etc. den Forum als Text angezeigt hatte und im index.php (musste ich in der Adressleiste meines Browers eintragen) es als link. also umgekehrt.
Mal dann ausprobieren gleich auch, ob es dann geht wenn ich den umdrehe tun.
Verfasst: Mo 03.Apr, 2006 13:44
von AmigaLink
Stimmt! Ich hatte nur auf die schnelle die abfrage selber angepasst und dabei nicht auf den rest geachtet.
Entweder drehst du es so um wie du gepostet hast, oder du setzt ein ! (Ausrufungszeichen) direkt vor preg_match.

Verfasst: Mo 03.Apr, 2006 13:54
von Christian_N
aha das mit ausrufezeiche geht ja auch
naja man lehrt nur hinzu
Habs jedenfalls jetzt mal bei Forum um testweisse beim Album gemacht ist man auf album.php so ist es als text ansonste link, selbst wenn man dann im Album eine kategorie auswählt wirds wieder zum link wobei es klar ist da er dann album_cat.php aufruft.
Des könnte man sicher erweitern dann irgendwie um bei den code von oben zu bleiben, müsste es wenn man eine Forum auswählt wo dann viewforum.php?f=id aufgerufen wird ich sicher unter den oben genannte code nur diese reinsetzen:
Code: Alles auswählen
'FORUM' => ( preg_match('/viewforum.'.$phpEx?f=id.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
Wobei ich dies mit der ID dann auslesen lassen müsste glaub $forum_id müsste es dann sein.
Aber das ist erstmal net so wichtig, hauptsache es klappt so jetzt erstmal

Verfasst: Mo 03.Apr, 2006 23:32
von AmigaLink
^^ Ja und nein.
Code: Alles auswählen
preg_match('/index.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI'])
schaut ob index.php in der Servervariable (
$HTTP_SERVER_VARS['REQUEST_URI']) enthalten ist. Es ist also egal ob du nur index.php, oder ob du index.php?c=id aufrufst. Das Ergebnis wird in beiden Fällen ein TRUE sein.
Das gleiche gild natürlich auch für die viewforum.php, wenn du diese mittels preg_match(); abfragst.

Schau dir mal meinen
Switch off navigation by URL an (der link führt zum Beschreibungsthread). Der basiert auf dem gleichem Prinzip.
Im übrigen müsste
Code: Alles auswählen
'FORUM' => ( preg_match('/viewforum.'.$phpEx?f=id.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
so geschrieben werden
Code: Alles auswählen
'FORUM' => ( preg_match('/viewforum.'.$phpEx\?f=id.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
weil das Fragezeichen ein Quantifier (teil der PCRE Funktion (Reguläre Ausdrücke), die beim preg_match(); zum einsatz kommt) ist. Solche Quantifier müssen mit einem \ gekennzeichnet werden, wenn sie nicht als Quantifier zum einsatz kommen sondern als Zeichen abgefragt werden sollen.
Verfasst: Di 04.Apr, 2006 15:43
von Christian_N
Hm, muss ich dann mal ausprobieren, dann dürfte ja
Code: Alles auswählen
'FORUM' => ( preg_match('/viewforum.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
ausreichen, da dann ja bei viewforum.php?f=id es trotzdem als TRUE rausgibt, wenn ich es richtig verstanden habe.
Werds jedenfalls, wenn ich mal 5min zeit habe es probieren und das ergebniss posten, obs geklappt hat

Verfasst: Di 04.Apr, 2006 17:01
von oxpus
Warum nicht
Code: Alles auswählen
$check_string = $HTTP_SERVER_VARS['REQUEST_URI'];
if (strpos($check_string, 'viewforum.'.$phpEx.'?f='.$forum_id))
{
$in forum = true;
}
else
{
$in_forum = 0;
}
und dann wäre FORUM
Code: Alles auswählen
'FORUM' => ($in_forum) ? '<b>' . $lang['Forum'] . '</b>' : '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>',
Viel schneller und genauso effektiv.
Verfasst: Di 04.Apr, 2006 17:15
von Christian_N
Das heißt das ich also, dann um es mit index.php, viewtopic.php, posting.php mit eine else if nur erweitern brauche?
so im prinzip?:
Code: Alles auswählen
if (strpos($check_string, 'index.'.$phpEx))
{
$in forum = true;
}
elseif (strpos($check_string, 'viewforum.'.$phpEx.'?f='.$forum_id))
{
$in forum = true;
}
elseif (strpos($check_string, 'viewtopic.'.$phpEx.'?t='.$topic_id))
{
$in forum = true;
}
elseif (strpos($check_string, 'posting.'.$phpEx))
{
$in forum = true;
}
else
{
$in_forum = 0;
}
Damit der Link zum Forum als Text anzeigt, wenn man auf index.php, viewforum.php?f=id, viewtopic.php?t=id und posting.php ist und in portal.php, memberlist.php etc. dann es als Link anzeigt?
Verfasst: Di 04.Apr, 2006 18:39
von AmigaLink
oxpus hat geschrieben:Viel schneller und genauso effektiv.
Stimmt.
Ich würde es dann so schreiben:
Code: Alles auswählen
if (strpos($check_string, 'index.'.$phpEx) || strpos($check_string, 'viewforum.'.$phpEx.'?f='.$forum_id) || strpos($check_string, 'viewtopic.'.$phpEx.'?t='.$topic_id) || strpos($check_string, 'posting.'.$phpEx))
{
$in_forum = true;
}
else
{
$in_forum = 0;
}
(ist allerdings, zugegebenerweise, etwas unübersichtlicher).
Aber warum die Topic bzw. Forum_id mit angeben? Die ist doch vollkommen irrelevant.
Code: Alles auswählen
elseif (strpos($check_string, 'viewtopic.'.$phpEx.'?t='.$topic_id))
{
$in forum = true;
}
wird z.B. nicht greifen wenn ein Beitrag direkt angesprungen wird (also mit viewtopic.php?p=xx).

Verfasst: Di 04.Apr, 2006 18:53
von Christian_N
Habe da noch keine ahnung bin noch am lernen *gg*.
Also wenn die irrelevant ist, dann so?
Code: Alles auswählen
if (strpos($check_string, 'index.'.$phpEx) || strpos($check_string, 'viewforum.'.$phpEx) || strpos($check_string, 'viewtopic.'.$phpEx) || strpos($check_string, 'posting.'.$phpEx))
{
$in_forum = true;
}
else
{
$in_forum = 0;
}
Damit es greift, wenn ein Beitrag direkt mit viewtopic?p=xx angesprungen wird?
EDIT: Habs gemacht, irgendwie greift es jetzt nicht mehr, egal ob ich auf Home, Mitgliederliste oder im Forum bin es bleibt als Link.
Verfasst: Di 04.Apr, 2006 19:11
von oxpus
Lass $phpEx mal weg...
Und dazu: Ist REQUEST_URI überhaupt verfügbar?
Nicht jeder Provider gibt das frei!
Verfasst: Di 04.Apr, 2006 19:46
von Christian_N
[quote="oxpus - Di 04.Apr, 2006 19:11";p="57298"]
Und dazu: Ist REQUEST_URI überhaupt verfügbar?
Nicht jeder Provider gibt das frei![/quote]
Ja sicher müsste es verfügbar sein, sonst wärs ja nicht mit
Code: Alles auswählen
'FORUM' => ( preg_match('/index.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<a href="' . append_sid("index.$phpEx") . '">' . $lang['Forum'] . '</a>' : '<b>' . $lang['Forum'] . '</b>',
gegangen wohl.
Naja war aber mein fehler hab vergessen auch
zu benutzen, also in portal.php, memberlist.php, faq.php etc. wird "Forum" als Link dargestellt. und bei viewtopic.php, viewforum.php (egal bei welche ID), index.php und posting.php (egal welche mode (edit, delete, quote etc.)) zeigt "Forum" als Text an
Dann werd ich mal die tage, machen auch beim album, bei memberlist.php reicht ja eigentlich dann
Code: Alles auswählen
'MEMBERLIST' => ( preg_match('/memberlist.'.$phpEx.'/i', $HTTP_SERVER_VARS['REQUEST_URI']) ) ? '<a href="' . append_sid("memberlist.$phpEx") . '">' . $lang['Memberlist'] . '</a>' : '<b>' . $lang['Memberlist'] . '</b>',
da dort es ja nur bei eins anzeigt
Danke soweit erstmal für die hilfe
