link ausblenden wenn die seite anzeigt (z.B. index)

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

link ausblenden wenn die seite anzeigt (z.B. index)

Beitrag 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
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag 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>',
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag 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
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag 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. :)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

aha das mit ausrufezeiche geht ja auch :hh:
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 :)
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag 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.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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 :)
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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?
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag 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). ^6
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von Christian_N am Di 04.Apr, 2006 18:59, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Lass $phpEx mal weg...
Und dazu: Ist REQUEST_URI überhaupt verfügbar?
Nicht jeder Provider gibt das frei!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag 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

Code: Alles auswählen

$check_string = $HTTP_SERVER_VARS['REQUEST_URI'];
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 :)
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Antworten