Gopox Skrevet 20. juni 2009 Del Skrevet 20. juni 2009 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
BlueEAGLE Skrevet 20. juni 2009 Del Skrevet 20. juni 2009 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
Gopox Skrevet 20. juni 2009 Forfatter Del Skrevet 20. juni 2009 Kan du si meg hvor jeg bør lete etter en guide på et slikt oppsett? Tipper det blir bedre enn å prøve meg frem hvis dette er helt galt. Lenke til kommentar
BlueEAGLE Skrevet 20. juni 2009 Del Skrevet 20. juni 2009 <?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. Lenke til kommentar
fhugas Skrevet 25. juni 2009 Del Skrevet 25. juni 2009 (endret) 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 25. juni 2009 av fhugas Lenke til kommentar
Gopox Skrevet 26. juni 2009 Forfatter Del Skrevet 26. juni 2009 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
Wackamole Skrevet 26. juni 2009 Del Skrevet 26. juni 2009 lite brukervennlig den dær, skal du legge til en link, må du legge til ting i nesten hele scriptet. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå