IPB

Willkommen, Gast ( Anmelden | Registrierung )

3 Seiten V  < 1 2 3 >  
Reply to this topicStart new topic
> Aktuelle Seite In Menu Mit Css Markieren, ... gab hier irgendwo mal einen Thread
Wertung 4 V
HPVD
Beitrag 15.04.2007 - 19:23
Beitrag #11


is getting harder


Gruppe: User
Beiträge: 11
Mitglied seit: 11.04.2007
Mitglieds-Nr.: 6.770



Super, Herzlichen Dank besonders auch für die prägnante Erklärung!
Umfärben funktioniert nun auch im Nav-Bereich - zumindest bei manuell entsprechend verändertem Link.

Nur das script funktioniert noch nicht ganz korrekt - es erkennt nicht wie gewünscht auf welcher Seite man ist -zumindest gibt es nie die passende Link manipulation aus (bei Quelltext-Anzeige im Browser erkennbar)
Die automatische Link-Erstellung funktioniert wunderbar.

weis jemand Rat ?
Ist die Syntax des Scripts zur Abfrage der aktuellen Seite so def korrekt?

Der Beitrag wurde von HPVD bearbeitet: 15.04.2007 - 19:25
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 17.04.2007 - 13:45
Beitrag #12


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



Lass dir mal anzeigen, was mit
HTML
<?php
echo
basename($_SERVER['PHP_SELF']);
?>
ausgegeben wird und ob das jeweils mit einem der Indizes des Arrays übereinstimmt.
Go to the top of the page
 
+Quote Post
Auge
Beitrag 17.04.2007 - 14:35
Beitrag #13


Anwärter auf W3.org Mitgliedschaft
*****

Gruppe: User
Beiträge: 550
Mitglied seit: 28.11.2001
Wohnort: Berlin Friedrichshain
Mitglieds-Nr.: 107



ZITAT(Thomas @ 17.04.2007 - 13:45) *
Lass dir mal anzeigen, was mit
HTML
<?php
echo
basename($_SERVER['PHP_SELF']);
?>
ausgegeben wird und ob das jeweils mit einem der Indizes des Arrays übereinstimmt.

Eine Anmerkung und ein Trick:

Anmerkung: $_SERVER["PHP_SELF"] soll manipulierbar sein (habe ich gelesen, ohne es beweisen zu können), daher kann man als Alternative $_SERVER["SCRIPT_NAME"] nehmen.

Trick: Um ein auf diese Art erzeugtes Menü in jeder Verzeichnisebene verwenden zu können, sollte die Notation verändert werden. Als Beispiel nehme ich mal Andreas' Menü und verteile ein paar Seiten in Unterverzeichnisse. Die Startseite und die Anfahrtsbeschreibung liegen im Wurzelverzeichnis der Website (per PHP mit $_SERVER["DOCUMENT_ROOT"] zu ermitteln, normalerweise das Verzeichnis in dem die Startseite liegt.), die Seite mit dem Kontaktformular und das Impressum liegen im Unterverzeicnis "kontakt".

Außerdem ist es mit einer kleinen Änderung möglich, aus dem Link zur momentan geladenen Seite einen Menüpunkt ohne Verlinkung zu machen. Warum sollte die aktuelle Seite auch mit sich selbst verlinkt sein.

das Array:
QUELLTEXT
<?php
   $url = array(
   "/index.php"=>"Home",
   "/anfahrt.php"=>"Anfahrt",
   "/kontakt/kontakt.php"=>"Kontakt",
   "/kontakt/impressum.php"=>"Impressum");


die Verarbeitung:
QUELLTEXT
<?php
echo '<ul>';
while(list($key, $val) = each($url)){
  echo '<li>';
  if (strstr($_SERVER['SCRIPT_NAME'],$key))
   {
   echo '<span id="current">'.$val.'</span>';
   }
  else
   {
   echo '<a href="'.$key.'">'.$val.'</a>';
   }
  echo '</li>'."\n";
  }
echo '</ul>';
?>


Ich habe die Dateinamen im Unterschied zu Andreas' Lösung vollständig in das Array geschrieben. Ansonsten funktioniert alles gleich, bis auf die Tatsache, dass der Menüpunkt der aktuellen Seite kein Link ist. Der allen Pfaden vorangestellte Schrägstrich/Slash ("/") sorgt dafür, dass ein Browser davon ausgeht, dass die Angaben vom Domainnamen aus gesetzt sind (Home: www.example.com/index.php, Impressum: www.example.com/kontakt/impressum.php). Egal, in welchem Verzeichnis die aufgerufene Seite liegt, das Menü enthält immer die richtigen Pfade zu den anderen Seiten.

Das Element <span> verwende ich, damit die Formatierung in allen graphischen Browsern gleich dargestellt wird. Ohne dieses zusätzliche Element müsste man sich mit dem fehlerhaften Boxmodel des MSIE herumschlagen.

Tschö, Auge

Der Beitrag wurde von Auge bearbeitet: 17.04.2007 - 14:40
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 17.04.2007 - 15:07
Beitrag #14


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



ZITAT(Auge @ 17.04.2007 - 15:35) *
daher kann man als Alternative $_SERVER["SCRIPT_NAME"] nehmen.
$_SERVER["SCRIPT_NAME"] evaluiert aber bei lokalen Installationen, bei denen nicht mit einem Apache-PHP-Plugin gearbeitet wird, zu etwas in der Art: "/php3-bin/php.exe". Der Name der Seite kommt dann nicht darin vor. Dann sollte man ggf. eher mit den Indizes "REQUEST_URI" oder "PATH_TRANSLATED" arbeiten. Die Konstante __FILE__ wäre eine weitere (und wirklich sichere) Möglichkeit. Auf diese Optionen hatte ich jetzt allerdings erstmal nicht verwiesen, um nicht zu sehr von der eigentlichen Ursache abzulenken. Das Problem wird momentan wohl sein, dass der (vermeintliche) Seitenname und der Index im Array nicht übereinstimmen.
Go to the top of the page
 
+Quote Post
HPVD
Beitrag 17.04.2007 - 19:18
Beitrag #15


is getting harder


Gruppe: User
Beiträge: 11
Mitglied seit: 11.04.2007
Mitglieds-Nr.: 6.770



herzlichen Dank für die vielen Ideen, die Unterstützung und sogar noch weiteren Verbesserungsvorschläge!

Die Ausgabe zu überprüfen - da hätte ich ja eigentlich selbst mal drauf kommen müssen...

die Ausgabe von
HTML
<?php
echo
basename($_SERVER['PHP_SELF']);
?>


ist:
"navigation.php" . 

das ist das script welches  den Navigationsbereich generiert und welches ich mit


HTML
<body>

<?php
$navigation=file_get_contents("http://www.dieeinsparberater.de/navigation.php");
echo $navigation;
?>

<div id="inhalt">
....


auf jeder Seite einbinde.

=>die Navigation muss nur an einer Stelle gepflegt werden.

Es enthält innerhalb des <div id="navigation"> das hier besprochene LinkScript  und erscheint im oben beschriebenen css-frame.

Weil ich noch nicht so lange dabei bin und vom Seitenlayout mittels LaTeX für Fachbücher etc... komme bin ich auch für Anregungen im Bereich des Vorgehensstrategie sehr dankbar:
Ist das ein unlogisches Vorgehen im webdesign?? Würdet ihr es anders machen?

Aber das wichtigste: wie komme ich aus dem navigation.php raus um die aktuelle Seite abzufragen??

Der Beitrag wurde von HPVD bearbeitet: 17.04.2007 - 19:19
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 18.04.2007 - 8:33
Beitrag #16


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



In aller Kürze: Definiere in navigation.php eine Funktion
HTML
<?php
function
menue($curfil) {
$url = array(
"foobar.php"=>"Menüeintrag für foobar.php",
"blabla.php"=>"Menüeintrag für blabla.php",
);
$men = '';
foreach($url as $fil => $nam) {
$men .= '<li><a href="'.$fil.'"';
if ($fil == basename($curfil)) $men .= ' id="current"';
$men .= '>'.$nam.'</a></li>'."\n";
}
return($men);
}
?>
die das Menü in einem String zusammensammelt und als Funktionsergebnis zurückliefert. Das Argument gibt den aktuellen Dateinamen an.

Binde navigation.php in den einzelnen Dateien mittels include() ein und übergib den aktuellen Dateinamen als Argument:
HTML
<?php
include('navigation.php');
echo menue(__FILE__);
?>


Das ist jetzt nicht getestet (könnte also durchaus ein Semikolon oder eine Klammer fehlen), aber vom Prinzip solltest du so arbeiten können. Ich gehe übrigens von PHP4 aus, falls nicht, musst du statt foreach() natürlich das while()-Konstrukt verwenden.

Falls dir das so nicht klar ist, frag einfach nach.
Go to the top of the page
 
+Quote Post
Auge
Beitrag 23.04.2007 - 13:52
Beitrag #17


Anwärter auf W3.org Mitgliedschaft
*****

Gruppe: User
Beiträge: 550
Mitglied seit: 28.11.2001
Wohnort: Berlin Friedrichshain
Mitglieds-Nr.: 107



ZITAT(HPVD @ 17.04.2007 - 19:18) *
die Ausgabe von
HTML
<?php
echo
basename($_SERVER['PHP_SELF']);
?>


ist: "navigation.php" .

Wenn dein Code in eben dieser Datei steht und diese Datei direkt aufgerufen wird, ja. Wenn die Datei mit include() oder require() in eine andere PHP-Datei eingefügt wird, wird der Name der Datei ausgegeben, in die navigation.php eingefügt wurde.

ZITAT(HPVD @ 17.04.2007 - 19:18) *
HTML
<body>

<?php
$navigation=file_get_contents("http://www.dieeinsparberater.de/navigation.php");
echo $navigation;
?>

<div id="inhalt">
....


auf jeder Seite einbinde.

=>die Navigation muss nur an einer Stelle gepflegt werden.

Es enthält innerhalb des <div id="navigation"> das hier besprochene LinkScript und erscheint im oben beschriebenen css-frame.

file_get_contents() ist zur Ausgabe puren Textes gedacht, da sie den Inhalt der Datei in einen String einliest (siehe php.net: Funktion file_get_contents). Wie Thomas schon schrieb, ist die Verwendung von include() der richtige Weg.

ZITAT(HPVD @ 17.04.2007 - 19:18) *
Aber das wichtigste: wie komme ich aus dem navigation.php raus um die aktuelle Seite abzufragen?

navigation.php wird, so sie mit include() oder require() eingebunden wurde, im Kontext dieser Datei interpretiert. Wie oben angeführt, ergibt $_SERVER['PHP_SELF'] oder auch $_SERVER['SCRIPT_NAME'] (mit den von Thomas angeführten Einschränkungen (Posting vom 17.04.2007 - 15:07)) den Namen der Datei, in die navigation.php eingebunden ist. Spätestens wenn du mit mehreren Verzeichnisebenen die Dokumente der Website sortierst, fällt aber die Verwendung von basename($_SERVER['...']) aus, da dabei der Pfad zur Datei abgeschnitten wird und alle verlinkten Dokumente im gleichen Verzeichnis vermutet werden, wo sie dann aber nicht zu finden sind.

Dann ist meine Lösung (Posting vom 17.04.2007 - 14:35) die Richtige, da sie die verschiedenen Verzeichnisse berücksichtigt.

Tschö, Auge

PS: Zum Unterschied von include und require: Wenn in einer per require eingebundenen Datei ein Fehler auftritt, wird die Verarbeitung direkt abgebrochen, während die Verarbeitung bei Einbindung per include fortgesetzt wird.
Go to the top of the page
 
+Quote Post
HPVD
Beitrag 01.05.2007 - 14:56
Beitrag #18


is getting harder


Gruppe: User
Beiträge: 11
Mitglied seit: 11.04.2007
Mitglieds-Nr.: 6.770



hey danke,  dann werde ich mal auf include "umrüsten" und es probieren!

Gruss HPVD
Go to the top of the page
 
+Quote Post
Creme
Beitrag 20.12.2007 - 22:12
Beitrag #19


Rookie


Gruppe: User
Beiträge: 5
Mitglied seit: 20.12.2007
Wohnort: Leipzig
Mitglieds-Nr.: 7.210



Hallo ich hab ein Problem mit dem Script! Undzwar bekomme ich es bei mir nicht auf die Reihe. Ich würde mich freuen wenn Ihr mir helfen könntet!
ich poste einfach mal was ich gebastelt hab damit... (leider ist hier nichts eingerückt deswegen bisschen doof zu lesen)

die index.php (gekürzt)
HTML
<?php
echo
" <head>\n";
echo " </head>\n";
echo " <body>\n";

echo " <div id=\"bigwrap\">\n";
echo " <div id=\"header\">\n";
include "header.php";
echo " </div>\n";
echo " <div id=\"content_ges\">\n";
include "content_ges.php";
echo " </div>\n";
echo " <div id=\"footer\">\n";
include "footer.php";
echo " </div>\n";
echo " </div>\n";

echo " </body>\n";
echo "</html>\n";
?>

die conten_ges.php
HTML
<?php
if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
include $dateien[$_GET['section']];
} else {
include $dateien['Startseite'];
}
?>

die header.php
HTML
<?php
function
menue($curfil) {
$url = array(
"index.php?section=Startseite"=>"Startseite",
"index.php?section=test1"=>"test1",
"index.php?section=test2"=>"test2",

);
$men = '';
foreach($url as $fil => $nam) {
$men .= '<li><a href="'.$fil.'"';
if ($fil == basename($curfil)) $men .= ' id="current"';
$men .= '>'.$nam.'</a></li>'."\n";
}
return($men);
}
?>

<div id="header_logo">

</div>

<div id="navigation_top">
<div id="navi_top">
<ul>
<?php
echo
menue(__FILE__);
?>
</ul>
</div>
</div>

die startseite.php
HTML
<div id="menu_left">
<div id="title_menu_back"><span class="title_text"> » Login</span><br>
</div>
Loginformular
<div id="content_menu_close">
</div>
</div>

<div id="content_inner">
<div class="content_box">
<div id="title_back" style="text-align:right"><span class="title_text">» Willkommen auf sk-dezign.de</span><br>
</div>
</div>
<div class="content_box">
TEXT<br>
TEXT<br>
TEXT<br>
TEXT<br>
TEXT<br>
TEXT<br>
TEXT<br>
</div>

<div id="content_close"></div>
</div>


Das sollte eigentlich alles relevante sein...
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 21.12.2007 - 9:50
Beitrag #20


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



ZITAT(Creme @ 20.12.2007 - 22:12) *
Hallo ich hab ein Problem mit dem Script! Undzwar bekomme ich es bei mir nicht auf die Reihe. Ich würde mich freuen wenn Ihr mir helfen könntet!
ich poste einfach mal was ich gebastelt hab damit... (leider ist hier nichts eingerückt deswegen bisschen doof zu lesen)


Um es kurz zu machen: Dadurch, dass du dich hier einfach an einen bestehenden Thread angehängt hast und nicht mehr als "bekomme ich es bei mir nicht auf die Reihe" schreibst, wird dir hier niemand helfen können. Damit du eine Antwort bekommen kannst, eröffne bitte einen eigenen Thread mit einem vernüftigen, auf dein Problem bezogenen Titel und beschreibe dort: Was willst du erreichen? Was geht nicht? Hat dein Problem tatsächlich einen Bezug zu dem, was bisher in diesem Thread behandelt wurde, kannst du auch hier weitermachen, aber auch dann fehlt: Was willst du erreichen? Was geht nicht?

ZITAT(Creme @ 20.12.2007 - 22:12) *
QUELLTEXT
<?php
  if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
    include $dateien[$_GET['section']];
  } else {
    include $dateien['Startseite'];
  }
?>

Ich hoffe, register_globals steht bei dir auf OFF? Falls nicht, könnte man dir mit diesem Stück Code die Festplatte formatieren!
Go to the top of the page
 
+Quote Post
Google Bot
Beitrag
Beitrag #


Google Ads









Go to the top of the page
 
Quote Post

3 Seiten V  < 1 2 3 >
Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 19.06.2024 - 5:28

taschenkalender
expertise-panel IPS Driver Error

IPS Driver Error

There appears to be an error with the database.
You can try to refresh the page by clicking here