php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.02.2008, 14:32  
Neuer Benutzer
 
Registriert seit: 03.02.2008
Beiträge: 7
skipper befindet sich auf einem aufstrebenden Ast
Standard Aktiver Menüpunkt

Hallo zusammen,
ich hoffe, dass nicht alle beim Karneval sind und mir vielleicht jemand helfen kann:
Bin PHP-Laie, möchte aber trotzdem meine per CSS gestaltete Navigation mit einer PHP-Funktion bereichern, die den Menüpunkt der jeweils aufgerufenen Seite durch z.B. eine andere Farbe hervorhebt.
Habe schon in anderen Foren gelesen, dass das per PHP relativ clever zu lösen ist, habe aber keine Ahnung, wie man das macht.
Übrigens:
Meine Navigation wird dynamisch in die jeweiligen Seiten eingebunden (arbeite mit CM-System webEdition).

Bin für jeden Hinweis dankabr.

Gruß
skipper
skipper ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.02.2008, 18:12  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

Was du mit dem dynamisch erzeugt aussagen willst ist mir schleierhaft.

zum problem:
wenn du die aktuelle seite nur als text ausgeben willst:
den Link in einen if-else block schreiben und im if nachschlagen, ob die entsprechende seite die aktuell offene ist. Realisierbar ist das über eine Statusvariable(am Seitenanfang gesetzt!?!) mit einem eindeutigen Wert, z.b. dem kompletten seitennamen.
PHP-Code:
 //ungetestet
$site_name="test.php?t=1b";
if(
$site_name=="test.php?t=1b")
{
echo 
'link';
}
else
{
echo 
'<a href="test.php?t=1b">link</a>';

wenn du das aussehen des links nur ändern willst:
ein array mit dem normalen aussehen anlegen und mithilfe eines einiger if's oder eines switch-case über die statusvariable den entsprechenden array-eintrag für den link ändern.
PHP-Code:
 //ungetestet
$site_name="test.php?t=b";
$array_look = array('green''green');
if(
$site_name=="test.php?t=a")   $array_look[0] = red;
if(
$site_name=="test.php?t=b")   $array_look[1] = red;

echo 
'<a href=""><font color="'.$array_look[0].'">link1</font></a>
<a href=""><font color="'
.$array_look[1].'">link2</font></a>'
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions
Drache ist offline  
Alt 03.02.2008, 19:11  
Neuer Benutzer
 
Registriert seit: 03.02.2008
Beiträge: 7
skipper befindet sich auf einem aufstrebenden Ast
Standard Aktiver Menüounkt

Hallo Drache,
vielen Dank für deine Antwort.
Mit dynamisch meinte ich, dass die Navigation beim Seitenaufruf includiert wird.

Mit deinem Script komme ich leider gar nicht klar, da ich völliger Newbie bin.
Aber in einem anderen Forum habe ich folgende Anweisung gesehen (die aber bei mir leider nicht funktioniert, weil ich wohl irgendwas falsch mache):

$scriptname = $_SERVER['PHP_SELF'];

<a href="./index.php"<?php if($scriptname == 'index.php'){ echo ' class="selected"'; } ?>>Home</a>

Was muß ich wo und wie einbinden?

Viellicht kannst du mir damit auf die Sprünge helfen, wäre super.
Wie gesagt:
Ich will nur das Aussehen des Naviagtionspunktes über die CSS-Klasse .selected ändern.

Vielen Dank schon mal.
skipper
skipper ist offline  
Alt 03.02.2008, 20:28  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

$scriptname = $_SERVER['PHP_SELF']; schreibt den scriptnamen in $scriptname. Diesen "Befehl" solltest du auf jeder Inhaltsseite ganz oben einbauen, bevor du das inhaltsverzeichnis inkludierst.

dein inhaltsverzeichnis sieht vermutlich so aus (ohne strukturtags o.ä.):
PHP-Code:
<a href="link1.php">link1</a>
<
a href="link2.php">link2</a
da fügst du dann in jedes a Tag die Anweisung <?php if($scriptname == 'seitenname'){echo 'class = "selected"';} ?> ein. wobei seitenname für den namen der seite steht. sieht dann so aus:

PHP-Code:
<a href="link1.php" <?php if($scriptname=="link1.php"){echo 'class="selected"';}?>>link1</a>
<a href="link2.php" <?php if($scriptname=="link2.php"){echo 'class="selected"';}?>>link2</a>
ich hoffe mal, dass das soweit verständlich ist.

PS: solltest du es nicht wirklich verstanden haben oder das script immer noch nicht tun, würd ich dir empfehlen, nen auszug aus deinem inhaltsverzeichnis zu posten.
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions

Geändert von Drache (03.02.2008 um 20:47 Uhr).
Drache ist offline  
Alt 04.02.2008, 08:09  
Neuer Benutzer
 
Registriert seit: 03.02.2008
Beiträge: 7
skipper befindet sich auf einem aufstrebenden Ast
Standard

Funktioniert leider nicht.
Folgendes habe ich gemacht.
Auf der Inhaltsseite:

<body>
<?
$scriptname = $_SERVER['PHP_SELF'];
?>

Und im Menü:

<a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == 'kontakt'){echo 'class = "he_selected"';} ?>>Kontaktformular</a>

Ist da irgendwo ein Tippfehler oder warum klappt es nicht?
skipper ist offline  
Alt 04.02.2008, 09:10  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

als scriptname wird der komplette ausdruck nach der domain bezeichnet.
bsp: http://www.versuch1234.de/test/index.php?asdfgh
dann ist /test/index.php der scriptname.

Tip: falls du nicht weist, was in der variable drinsteht, oder nicht das passiert, was du erwartest, solltest du die variable mal mit var_dump($variable); (o.a.) ausgeben.

Falls du aber lieber kürzere bezeichner bevorzugst (also sowas:
<a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == 'kontakt'){echo 'class = "he_selected"';} ?>>Kontaktformular</a>), dann tauscht du $_SERVER['PHP_SELF'] durch einen bezeichner deiner Wahl aus

also,
entweder so:

PHP-Code:
<body>
<?
$scriptname 
$_SERVER['PHP_SELF']; 
?>
PHP-Code:
//Und im Menü:

<a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == '/kontakt/kontakt.php'){echo 'class = "he_selected"';} ?>>Kontaktformular</a>
oder so:
edit: $scriptname müsste dann in jedem dokument mit einem anderen wert belegt werden
PHP-Code:
 <body>
 <?
 $scriptname 
'kontakt'
 
?>
PHP-Code:
//Und im Menü:
 
 <a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == 'kontakt'){echo 'class = "he_selected"';} ?>>Kontaktformular</a>
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions

Geändert von Drache (04.02.2008 um 09:15 Uhr).
Drache ist offline  
Alt 04.02.2008, 09:10  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Das funktioniert nicht, weil $_SERVER['PHP_SELF'] nicht nur "kontakt" zurückgibt, sondern "/kontakt/kontakt.php". Es gibt immer den relativen Pfad zum Document root zurück. Wenn du das ganze noch mit basename() verbindest, wird nurnoch "kontakt.php" angegeben.
PHP-Code:
$scriptname basename($_SERVER['PHP_SELF']); 
Wenn du nur PHP-Dateien hast, kannst du über basename auch noch das ".php" wegmachen, dann würde deine Abfrage stimmen. Schau einfach mal hier nach: PHP: basename - Manual

EDIT: @Drache: Wie soll das funktionieren, wenn er die zweite Variante benutzt? Dann wird ja immer die Seite "kontakt.php" als aktiver Menüpunkt angezeigt, da das ja alles andere als dynamisch ist.
Montellese ist offline  
Alt 04.02.2008, 09:19  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

@Montellese: ich ging davon aus, dass in jedem script diese variable mit einem anderen wert belegt wird.
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions
Drache ist offline  
Alt 04.02.2008, 12:06  
Neuer Benutzer
 
Registriert seit: 03.02.2008
Beiträge: 7
skipper befindet sich auf einem aufstrebenden Ast
Standard Aktiver Menüpunkt

Hallo Drache und Montellese,
da ist irgendwie ein Riesenwurm drin:
Habe alle drei Möglichkeiten versucht, aber nichts hat funktioniert.

Deshalb hier die Beiden Dateien.

Navigation:
<link href="../css/basic.css" type="text/css" rel="stylesheet" media="all" />

<table width="184" border="0" cellspacing="0" cellpadding="0" height="500">
<tr>
<td valign="top" width="175" background="../../layoutimages/infocenter/hg_navi_oben_links.gif">
<div id="vnavigation" align="left">


<!-- NaviTable -->

<table width="180" border="0" cellspacing="0" cellpadding="0" height="130">
<tr height="10">
<td width="10" height="10"></td>
<td height="10"></td>
</tr>
<tr height="20">
<td width="10" height="20"></td>
<td valign="top" height="20">
<div align="left">

<a href="/kontakt/index.php" class="kont">Kontakt</a></div>
</td>
</tr>
<tr height="10">
<td width="10" height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td width="10"></td>
<td valign="top">
<a href="#" class="heinemann">Heinemann-Au&szlig;endienst</a><br />

<a href="#" class="heinemann">Heinemann-Innendienst</a><br />

<a href="#" class="heinemann">Service-Point</a><br />

<a href="#" class="heinemann">GC-Fachgro&szlig;handel</a><br />

<a href="#" class="heinemann">Pfeffer+Mey<br />

Fachgro&szlig;handel</a><br />

<a href="/kontakt/anschrift.php" class="heinemann">Anschrift</a><br />



<a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == '/kontakt/kontakt.php'){echo 'class = "he_selected"';} ?>>Kontaktformular</a><br />




<a href="/kontakt/impressum.php" class="heinemann">Impressum</a><br />
</td>
</tr>
</table>


<!-- /NaviTable -->





</div>
</td>
<td valign="top" width="175"><img src="../../layoutimages/infocenter/hg_navi_oben_rechts.gif" alt="" height="500" width="175" border="0" /></td>
</tr>
</table>

Vollständige Seite:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>heinemann</title>
<link href="/css/basic.css" type="text/css" rel="stylesheet" media="all" />

<link rel="shortcut icon" href="/layoutimages/favicon.ico" >



</head>



<body>
<?
$scriptname = $_SERVER['PHP_SELF'];
?>

<div align="center">





<!-- HEADER -->


<we:include type="template" id="21" />


<!-- /HEADER -->


<!-- BODY -->

<table width="990" border="0" cellspacing="0" cellpadding="0" bgcolor="white">
<tr height="600">
<td valign="top" width="355" height="600" background="/layoutimages/infocenter/hg_navi_unten_breit.gif">


<!-- NAVI -->

<we:include type="template" id="116" />

<!-- /NAVI -->

</td>

<td valign="top" height="600">


<!-- CONTENT -->


<table width="492" border="0" cellspacing="0" cellpadding="0" bgcolor="white">

<!-- PATHWAY -->

<we:include type="template" id="48" />

<!-- /PATHWAY -->
<tr>

<td width="150"><img src="../layoutimages/alle/spacer.gif" alt="" height="32" width="150" border="0" /></td>
<td width="15"></td>
<td><img src="../layoutimages/alle/spacer.gif" alt="" height="32" width="291" border="0" /></td>
<td width="20"></td>
<td width="158"><img src="../layoutimages/alle/spacer.gif" alt="" height="60" width="158" border="0" /></td>
<td width="24"></td>
</tr>
<tr height="65">

<td colspan="5" align="left" valign="top" height="65">
<div align="left">
<span class="headheinemann"><we:input type="text" name="head" size="61" bgcolor="white" /></span><br />
<span class="subheadheinemann"><we:textarea name="subhead" cols="60" rows="3" width="500" height="60" bgcolor="white"/></span></div>
</td>
<td width="24" height="65"></td>
</tr>
<tr height="395">

<td class="text" colspan="6" valign="top" height="395">
<div align="left">

<span class="text"><we:textarea wysiwyg="true" name="text" cols="60" rows="20" autobr="true" importrtf="true" width="630" height="300" bgcolor="white" html="true" inlineedit="true" /></span></div>
</td>
</tr>
<tr>

<td width="150"></td>
<td width="15"></td>
<td></td>
<td width="20"></td>
<td width="158"></td>
<td width="24"></td>
</tr>
</table>

<!-- /CONTENT -->


</td>
</tr>
</table>

<!-- /BODY -->


<!-- FOOTER -->

<we:include type="template" id="47" />

<!-- /FOOTER -->


</div>

</body>

</html>

Vielen Dank für eure Bemühungen.
skipper ist offline  
Alt 04.02.2008, 15:20  
Neuer Benutzer
 
Registriert seit: 03.02.2008
Beiträge: 7
skipper befindet sich auf einem aufstrebenden Ast
Standard Aktiver Menüpunkt

Hallo zusammen,
da scheint irgendwie ein Riesenwurm drin zu sein. Habe alle drei Vorschläge ausprobiert, aber nichts hat geklappt.
Vor ca. 3 Stunden habe ich den Code für die Navi und für die Komplettseite gepostet, kam aber die Meldung dass erst ein Moderator die Nachricht freigeben muß. Darauf warte ich immer noch. Deshalb hier nur mal der Code für die Navigation:

<link href="../css/basic.css" type="text/css" rel="stylesheet" media="all" />

<table width="184" border="0" cellspacing="0" cellpadding="0" height="500">
<tr>
<td valign="top" width="175" background="../../layoutimages/infocenter/hg_navi_oben_links.gif">
<div id="vnavigation" align="left">


<!-- NaviTable -->

<table width="180" border="0" cellspacing="0" cellpadding="0" height="130">
<tr height="10">
<td width="10" height="10"></td>
<td height="10"></td>
</tr>
<tr height="20">
<td width="10" height="20"></td>
<td valign="top" height="20">
<div align="left">

<a href="/kontakt/index.php" class="kont">Kontakt</a></div>
</td>
</tr>
<tr height="10">
<td width="10" height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td width="10"></td>
<td valign="top">
<a href="#" class="heinemann">Heinemann-Au&szlig;endienst</a><br />

<a href="#" class="heinemann">Heinemann-Innendienst</a><br />

<a href="#" class="heinemann">Service-Point</a><br />

<a href="#" class="heinemann">GC-Fachgro&szlig;handel</a><br />

<a href="#" class="heinemann">Pfeffer+Mey<br />

Fachgro&szlig;handel</a><br />

<a href="/kontakt/anschrift.php" class="heinemann">Anschrift</a><br />



<a href="/kontakt/kontakt.php" class="heinemann" <?php if($scriptname == '/kontakt/kontakt.php'){echo 'class = "he_selected"';} ?>>Kontaktformular</a><br />




<a href="/kontakt/impressum.php" class="heinemann">Impressum</a><br />
</td>
</tr>
</table>


<!-- /NaviTable -->





</div>
</td>
<td valign="top" width="175"><img src="../../layoutimages/infocenter/hg_navi_oben_rechts.gif" alt="" height="500" width="175" border="0" /></td>
</tr>
</table>
skipper ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] aktiver menüpunkt markiert super.to_s PHP Tipps 2008 7 17.07.2008 15:26
Aktiver Link Underline Fritz73 HTML, Usability und Barrierefreiheit 6 06.06.2008 08:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php: <div class=\kont\>, php aktiver menüpunkt, css klasse für aktiven menüpunkt, webedition tag seitenname navigation

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum