• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wiederkehrende Menüs

Status
Für weitere Antworten geschlossen.

der_eine

Neues Mitglied
Hallo Leute,
wie kann ich es umgehen, dass ich ein Menü auf jeder Seite hinschreiben muss, wenn ich *nicht* mit Frames arbeiten kann/will und kein PHP habe? Wenn ich ein Menü mit 20 Einträgen habe und etwas ändert sich, muss ich 20 Dateien ändern.
Wie komm ich dadran vorbei?
 
JavaScript wäre eine Lösung, aber bedenke, das es immernoch Leute gibt, die JavaScript (aus welchen Gründen auch immer) deaktiviert haben.
 
Eine andere Alternative zu PHP wäre SSI (Server Side Includes), müsste aber auch vom Server unterstützt werden und die Dateien müssen die Endung .shtml haben:
Code:
<!--#include file="menu.shtml" -->
Wenn das auch nicht funktioniert fällt mir außer JS auch nichts mehr ein - müsste man die Besucher dies deaktiviert haben halt via noscript darauf hinweisen, dass es ohne nicht geht.
 
Ok, JavaScript. Noch ein Stichwort dazu, für mich? :)
Oder gibts noch eine Alternative für die Blödis, die das deaktiviert haben? ^^

Ne, SSI hab ich nicht zur Verfügung.
 
Zuletzt bearbeitet von einem Moderator:
Also, wenn es nur 20 Seiten sind, gibt es doch kein Problem. Ich habe bei einer Homepage mit 40 Seiten vor kurzem die Navigation geändert. In 30 min war ich fertig. STRG-C und STRG-V haben mir geholfen.:wink:
 
Jipieh, warum einfach wenns auch umständlich geht? ;)
Dann gehts mir eben ums Prinzip. Sagen wir, es ist eine Seite mit 50.000 Menüeinträgen. :P

Sagt mir noch einer, wie man das ungefähr mit JavaScript macht? :)
 
Zuletzt bearbeitet von einem Moderator:
Lösung mit JS: Menü in Variable schreiben, Variable ausgeben => var menu = '...'; document.getElementById('menu').innerHTML = menu;

Und da mir langweilig ist (und es geht ja ums Prinzip), hier noch eine Idee, die mir grade gekommen ist:
Wie wär mit nem lokalen PHP-Script, das die Dateien ändert:
PHP:
<!-- HTML-Grundgerüst etc. -->
<?php
if(isset($_POST['menu'])):
  file_put_contents('menu_template.html', $_POST['menu']);
  $path = 'files';
  if($dir = opendir($path)) {
    while($file = readdir($dir)) {
      if(preg_match('/[a-z0-9]\.html/i', $file))
        $files[] = $path.'/'.$file;
    }
  }
  foreach($files as $file) {
    $content = file_get_contents($file);
    $content = preg_replace('%<div id="menu">(.*)</div>%iU', '<div id="menu">'.$_POST['menu'].'</div>', $content);
    file_put_contents($file, $content);
  }
  echo 'fertig!';
endif;
/*
* BEDINGUNGEN:
* - Das Menü, wie es sein soll steht in der Datei "menu_template.html"
* - Die ganzen Seiten liegen im Verzeichnis "files" und haben die Endung .html
* - Das Menü steht immer zwischen <div id="menu"></div>
* - Du hast einen lokalen Webserver installiert
* 
* Verzeichnisse und Dateiendungen lassen sich natürlich auch noch anpassen
*/
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <textarea name="menu" rows="10" cols="40">
    <?php echo file_get_contents('menu_template.html'); ?>
  </textarea>
  <input type="submit" value="speichern" />
</form>
Mir ist bewusst, dass dieser Code vermutlich nie verwendet werden wird, aber wie gesagt: Mir war langweilig ;)
(ich garantiere nicht für Richtigkeit)
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben