Gå til innhold

[Løst]Spørsmål om ekstern meny på nettside


Anbefalte innlegg

Hei,

 

Jeg har et lite dilemma her, og tenker at det er best jeg forklarer situasjonen først.

 

Jeg skal lage en kjapp nettside, med 4-5 sider, men jeg har ikke lyst til å endre HTML-koden på hver side dersom jeg vil legge til eller endre et element i menyen på hver side.

 

Menyen er slik:

<ul>
<li class="current_page_item"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>

 

Problemet er at den siden som er aktiv skal ha

class="current_page_item"

inne i <li>. Det blir ikke neo komplisert av det dersom jeg bare bruker HTML, men hvis jeg linker til for eksempel "parts/menu.php" i hver enkelt fil blir det straks værre.

 

Jeg har tenkt på å lage en haug med if-statements som sjekker URL-en opp mot <a>, men det blir bare en eneste stor røre dersom jeg prøver.

 

Har noen et forslag til hva jeg bør gjøre, eller om jeg bør gi opp? Jeg vet det ikke er en stor sak å bare bruke HTML-kode i hvert enkelt dokument, men jeg er en sta person.

 

Håper noen kan hjelpe,

 

Takk på forhånd.

Lenke til kommentar
Videoannonse
Annonse

Hvis du lenker til menyen i hver fil (med innhold) så gjør du noe galt til å begynne med.

 

Det du sannsynligvis vil gjøre er å ha en "blank" side som kun inneholder rammeverk og inkluderer menyer og innhold dynamisk.

 

På den måten så skal det ikke være nødvendig å linke til en statisk verdi i noe av innholdet. I verste fall så legger du lenken i en variabel.

Lenke til kommentar

<?php
 include('fil som inneholder sanity_check() hvis misjon er å sikre at det som står i $_GET faktisk er noe som kan brukes.php');
?>
<html>
<head><title>Min geniale side</title></head>
<body>
<?php

 $curr_page = sanity_chec($_GET['page_id']);
 include('overskrift.php');
 include('meny.php');
 include('innhold.php');
 include('undertekst.php');
?>
</body>
</html>

 

Så er det bare å smelle ting du trenger å referere til i innhold.php inn i variabler og slå deg løs. :D

Lenke til kommentar

Nå vet jeg ikke hvordan nettstedet ditt er bygd opp, om du bruker index.php?id=34 eller har forskjellige php filer for hver side, noe jeg går ut i fra ettersom du nevnte du ikke ville oppdatere hver fil manuelt.

 

Så jeg satte sammen en liten funksjon for deg her

 

Går ut ifra at du ikke bruker database ettersom du ville ha det enkelt og greit så jeg lagde en textfil "database" som inneholder menystrukturen din, denne kan enkelt endres for hånd (kún 1 fil ;) )

 

Strukturen på den fila (menu.dat) er som følger:

Hovedside|/hovedside.php
Tulleside|/tull.php
Balleside|/ball.php

 

Her er funksjonen som skriver ut menyen

 

function showMenu() {

 

// Les inn menydata

$file = fopen('./menu.dat','r');

$menydata = fread($file, filesize('./menu.dat'));

fclose($file);

 

// Del opp menydataen

$row = split("\n", $menydata);

 

// Sjekk hvilken URI som benyttes nå

$current_uri = $_SERVER['REQUEST_URI'];

 

// Sjekk om URIen har GET variabler (index.php?foo=bar)

if(strpos($current_uri, '?')) {

$current_uri = explode('?', $current_uri);

$current_uri = $current_uri[0];

}

 

// Skriv ut menyen

echo("<ul>\n");

foreach($row as $value) {

$column = split('|', $value);

 

$name = $column[0];

$uri = $column[1];

 

// Sjekk om menylisten vi printer nå er den samme som vi er på

if($uri == $current_uri) {

echo('<li class="current_page_item"><a href="'.$uri.'">'.$name."</a></li>\n");

} else {

echo('<li><a href="'.$uri.'">'.$name."</a></li>\n");

}

}

echo("</ul>\n");

}

 

 

Edit: fiksa spoiler

Endret av fhugas
Lenke til kommentar

Hei,

 

Løste problemet ved å linke til følgende "parts/menu.php":

 

<ul>		
<!-- <li class="current_page_item"><a href="#">Home</a></li> -->
<?php 
$mappe = "moonlight/";
$side1 = "index.php";
$side2 = "bais.php";
$side3 = "kjeks.php";
$side4 = "monster.php";
$side5 = "contact.php";
$side6 = "admin.php";


$path = $_SERVER['SCRIPT_NAME']; 
switch($path)
{
	case "/$mappe$side1":
		$style_side1 = 'class="current_page_item"';
		break;
	case "/$mappe$side2":
		$style_side2 = 'class="current_page_item"';
		break;
	case "/$mappe$side3":
		$style_side3 = 'class="current_page_item"';
		break;
	case "/$mappe$side4":
		$style_side4 = 'class="current_page_item"';
		break;
	case "/$mappe$side5":
		$style_side5 = 'class="current_page_item"';
		break;
	case "/$mappe$side6":
		$style_side6 = 'class="current_page_item"';
		break;
}
?>
<li <?php echo $style_side1 ?>><a href="<?php echo $side1 ?>">Home</a></li>
<li <?php echo $style_side2 ?>><a href="<?php echo $side2 ?>">Bais</a></li>
<li <?php echo $style_side3 ?>><a href="<?php echo $side3 ?>">Kjeks</a></li>
<li <?php echo $style_side4 ?>><a href="<?php echo $side4 ?>">Monster</a></li>
<li <?php echo $style_side5 ?>><a href="<?php echo $side5 ?>">Contact</a></li>
<li <?php echo $style_side6 ?>><a href="<?php echo $side6 ?>">Admin</a></li>
</ul>

 

 

Vet ikke om det er helt bra å gjøre det sånn, men det fungerer hvertfall for meg og mitt bruk.

 

$mappe ("/moonlight") er forresten bare noe jeg har lagt på, pga at hele siden er innenfor mappen "moonlight".

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...