Zur Navigation

Navigation im CSS Layout

1 Christian

Salve
Mein altes problem, an dem ich nun schon seit Monaten rumpröble.... Leider ohne Erfolg.

Ich habe ein CSS Layout (nicht selber gemacht) und darin habe ich zwei divs. menu und inhalt. Wie kann ich nun im div inhalt ein bereits bestehendes Script einfügen? Wie lautet der richtige Code, dass die Links aus dem div menu sich im div inhalt öffnen? Die einfachste Art war für mich immer iframe, aber das ist ja nicht das tollste....

Zwei Fragen auf einmal, aber genau diese Fragen vermiesen mir in der letzten Zeit mein fortkommen in Sachen programmierung.

Danke Euch für die Hilfestellung!
Christian

---- nix Signatur

20.01.2007 20:55

2 Rudy

Du kannst ein Div nicht direkt wie mit 'target' adressieren. Entweder Du verwendest eine serverseitige Sprache wie PHP und bindest den Inhalt mittels include 'datei.html'; ein oder Du legst den Inhalt in verschiedenen Seiten an, die alle das Menü einbinden.
Die erste Lösung ist wegen der SEO-Aspekte eher im Zusammenhang mit htaccess geeignet (da Du dabei wahrscheinlich einen Parameter an immer dieselbe Seite übergibst, z.B. index.php?seite=1, um den richtigen Inhalt zu laden), zweitere ist für den Anfang sicher eine gute Lösung (weil es entsprechend des Inhalts verschiedene Dateien sind und nur der wiederkehrende Inhalt ausgelagert wird).

Siehe dazu auch dieses Thema.

20.01.2007 21:06 | geändert: 20.01.2007 21:07

3 Christian

Wunderbar... dann war ich ja gar nicht so weit weg.... php vergess ich mal, also Variante 2.

Wie kann ich nun hier in ein html.Doku ein fremdes Script einbinden, das dann auch in diesem div "arbeitet"? Sprich, die vorhandenen Links öffnen sich nur in diesem div?

Beispiel: Ich möchte mein Verzeichnis in eine Homepage einbauen, in der ich noch andere Seiten anbiete. Im Moment habe ich das einfach so gelöst, dass ich im Footer die entsprechenden Links eingebaut habe. Nun möchte ich diese Links aber auf der linken Seite.

In diesem Sinne wäre es evtl. einfacher, wenn ich die divs ins php einbauen würde, oder?

---- nix Signatur

20.01.2007 21:52

4 Rudy

Das Problem ist, Du denkst noch in Frames. Wenn Du mit divs arbeitest, musst Du immer in ganzen Seiten denken. Divs sind nur Ebenen innerhalb einer Seite, deshalb immer Teil der jeweiligen Seite. Also muss der sich wiederholende Teil in eine eigene Datei ausgelagert werden und später eingebunden sein, dass es im Browser so aussieht, als ob alles eines wäre.

Auch mit der zweiten Möglichkeit musst Du eine serverseitige Sprache (PHP, ASP, SSI) verwenden, je nachdem, was auf Deinem Webserver funktioniert. Die Befehle, die Du dazu kennen musst, sind sowieso begrenzt - bei einem Include ist es nur ein einziger.

PHP (.php)
<?php include "./menu.html"; ?> 
(Fehlermeldung wenn menu.html nicht vorhanden, Skript läuft weiter)

oder
<?php require "./menu.html"; ?> 
(Skript stoppt wenn menu.html nicht vorhanden)

ASP (.asp)
<!--#include virtual=menu.html--> 
SSI (.shtml):
<!--#include file="menu.html" --> 

In diesem Sinne wäre es evtl. einfacher, wenn ich die divs ins php einbauen würde, oder?
Definitiv "Ja". Die Position der Links bzw. des umschließenden Divs veränderst Du mit CSS. Die Links öffnen immer nur eine neue Seite, nicht eine andere Seite in irgend einem Frame.

Beispiel:

menu.php:
<div id="menu">
<a href="seite1.php">Seite1</a>
<a href="seite2.php">Seite2</a>
</div>

seite1.php
<html....

<body>
<?php include "menu.php"; ?>
<div id="inhalt">
Dies ist der Inhalt der 1. Seite.
</div>
[...]
</html>

seite2.php
<html....

<body>
<?php include "menu.php"; ?>
<div id="inhalt">
Dies ist der Inhalt der 2. Seite.
</div>
[...]
</html>

20.01.2007 22:20 | geändert: 20.01.2007 22:39

5 Christian

Salve

Also... ich hab das mal versucht. Die menu.htm erscheint aber nicht in den entsprechenden Seiten:

<html>
<head>
<title>menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div id="menu"> 
  <p><a href="about.html">Wieso?</a><br>
    <a href="aufnahmekriterien.htm">Regeln</a><br>
    <a href="qualitaet.htm">Ausgezeichnet</a><br>
    <a href="news.htm">News</a><br>
    <a href="impressum.htm">Impressum</a></p>
  </div>
</body></html>
Hier wie ich das include gemacht habe:

<p>&nbsp;</p>

  <?php include "./menu.htm"; ?>


<div id="inhalt">
respektive, eigentlich wollte ich es so machen:
<div id="menu">
  <h3>Navi</h3>
  <?php include "./menu.htm"; ?>
</div>

Das eigentliche Problem....

Eine andere Frage: Irgendwie läuft mir die Seite aus dem Ruder resp. ist zu breit. Ich habe mit einigen Einstellungen versucht, das Ding wieder zu verkleinern, das bring ich aber nicht hin. Habt Ihr mir den Tip, wo ich den Fehler gemacht habe?

webmaster-directory.biz

Gruss
Christian

---- nix Signatur

23.01.2007 10:36

6 Jörg

Hallo Christian,

die Include-Datei sollte nur den Teil des HTML-Codes enthalten, den du an der Stelle einfügen möchtest, also:

<div id="menu"> 
 <p><a href="about.html">Wieso?</a><br>
   <a href="aufnahmekriterien.htm">Regeln</a><br>
   <a href="qualitaet.htm">Ausgezeichnet</a><br>
   <a href="news.htm">News</a><br>
   <a href="impressum.htm">Impressum</a></p>
 </div>

bzw. bei deiner zweiten Lösung:

 <p><a href="about.html">Wieso?</a><br>
   <a href="aufnahmekriterien.htm">Regeln</a><br>
   <a href="qualitaet.htm">Ausgezeichnet</a><br>
   <a href="news.htm">News</a><br>
   <a href="impressum.htm">Impressum</a></p>

Eine komplette HTML-Datei benötigst du nur bei Iframes / Frames

Die zweite Frage beantworte ich später in einem separaten Thread

23.01.2007 11:01 | geändert: 23.01.2007 11:02

8 Jörg

Nachtrag:

Wenn das Menu nicht erscheint, was erscheint dann an der Stelle im HTML-Quelltext? Gegebenfalls musst du noch dafür Sorge tragen, dass die Seiten, in die du includest, geparst werden, also z.B. mit einer .php Endung versehen oder den Server anweisen auch .html Seiten zu parsen (siehe z.B. diesen Thread)

23.01.2007 11:28 | geändert: 23.01.2007 11:29

9 Christian

Hallo Jörg

Da erscheint noch nichts...

Noch mal zur Sicherheit:

Diesen Code habe ich im entsprechenden Doku, in dem das Menu erscheinen soll eingefügt. Zur Sicherheit einfach noch die Linien davor / danach:
<p>&nbsp;</p>

<?php include "./menu.htm"; ?>


<div id="inhalt">
Die menu.htm sieht nun so aus wie in Deinem ersten Beispiel beschrieben. Hier der Link zu einer der Seiten, in der das menu eigentlich auftauchen sollte:
http://www.webmaster-directory.biz/news.htm

Ich denke eigentlich, alles richtig gemacht zu haben. In einem Doku (www.webmaster-directory.biz/about.htm) habe ich noch die "alte" Variante zum einfügen:
<p>&nbsp;</p>
<div id="menu">
  <h3>Navi</h3>
  <?php include "./menu.htm"; ?>
</div>

<div id="inhalt">
Funktioniert aber auch nicht wirklich, nur der Titel wird angezeigt.

---- nix Signatur

23.01.2007 11:47 | geändert: 23.01.2007 11:48

10 Jörg

Im Quelltext von news.htm findet man den PHP-Code:

<?php include "http://www.tx-websolutions.com/menu.htm"; ?>

Das heißt, der PHP-Code wurde nicht geparst. wie in meinem Nachtrag beschrieben, musst du entweder die Datei news.htm umbenennen in news.php oder die hier beschriebene .htaccess Lösung anwenden, damit auch .htm Dateien geparst werden

Nachtrag:

und beim Include solltest du auch nicht die URL angeben, sondern besser den relativen Pfad:

<?php include "menu.htm"; ?>

23.01.2007 11:54 | geändert: 23.01.2007 11:56