Vill du ha ut filnamnet eller vad vill du jämföra med för värde?
Filnamnet:
<?php
print $_SERVER['PHP_SELF'];
?>
8 svar · 346 visningar · startad av Tinwëlint
För tillfället har jag några sidor som inte alls är databasorienterade på något vis (eftersom jag inte kan det). Det jag skulle vilja ha är en enkel funktion som ger länken till sidan man är på i menyn en viss klass så att man kan styla den annorlunda. Finns det något smidigt sätt?
Vill du ha ut filnamnet eller vad vill du jämföra med för värde?
Filnamnet:
<?php
print $_SERVER['PHP_SELF'];
?>
Ja jag vill nog jämföra filnamnet med länkarna i menyn. Om nån stämmer överens så ska den länken tilldelas en viss class.
<?php
if($_SERVER['PHP_SELF'] == "firstpage.php") { $cssClass = "firstPageClass"; }
?>
<a href="firstpage.php" class="<?php print $cssClass; ?>">Förstasidan</a>
Nej inte så, förlåt om jag har varit otydlig.
Scriptet ska helst titta igenom länkarna i menyn, kolla om någon av deras href stämmer överens med
['PHP_SELF'] för att om det är så tilldela den länken en class (som kan vara samma för alla för den ska bara ge länken till sidan man är på ett speciellt utseende).
Men är det inte det K@llen i princip har gjort ?
Ett exempel:
$menu = array(
'/index.php' => 'Start',
'/guestbook/index.php' => 'Gästbok',
'/another.php' => 'Annan sida'
);
foreach ($menu as $link => $text) {
$class = ($link == $_SERVER['PHP_SELF']) ? 'menu_active' : 'menu';
echo "<a href=\"$link\" class=\"$class\">$text</a><br>\n";
}
Jo men som jag tolkade K@llens kod så måste man ju skriva en if-sats för varje menyalternativ (jag kanske tolkade fel förstås).
Din fungerade i alla fall solklart!
Men om jag vill ha ett attribut till i arrayen för varje menyalternativ
som:
'/index.php' => 'Start' => 'Startsidan',
foreach ($menu as $link => $text => $title) {
$class = ($link == $_SERVER['PHP_SELF']) ? 'menu_active' : 'menu';
echo "<a href=\"$link\" class=\"$class\" title=\"$title\">$text</a><br>\n";
så fungerer inte det sättet (vet väldigt lite om php) Men hur ska jag göra då?
Då kan du göra så här:
$menu = array(
array('link'=>'/index.php', 'text'=>'Start', 'title'=>'Startsidan'),
array('link'=>'/guestbook/index.php', 'text'=>'Gästbok', 'title'=>'Min gästbok'),
array('link'=>'/another.php', 'text'=>'Annan sida', 'title'=>'Ingen av de andra')
);
foreach ($menu as $row) {
$class = ($row['link'] == $_SERVER['PHP_SELF']) ? 'menu_active' : 'menu';
echo "<a href=\"{$row['link']}\" class=\"$class\" title=\"{$row['title']}\">{$row['text']}</a><br>\n";
}
Eller om du inte vill använda beskrivande index i arrayerna:
$menu = array(
array('/index.php', 'Start', 'Startsidan'),
array('/guestbook/index.php', 'Gästbok', 'Min gästbok'),
array('/another.php', 'Annan sida', 'Ingen av de andra')
);
foreach ($menu as $row) {
$class = ($row[0] == $_SERVER['PHP_SELF']) ? 'menu_active' : 'menu';
echo "<a href=\"$row[0]\" class=\"$class\" title=\"$row[2]\">$row[1]</a><br>\n";
}
I bägge alternativen kan du sedan lägga till fler attribut om du vill.
Tack!