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

Verlinkung auf eine id ??? tree menue mit java

ita2001

Neues Mitglied
hallo,
die seite ist per css style aufgebaut:
body style="background-color: #3F3F3F" text="#FF00FF">
<div id="gesamt">
<div id="header">
</div>
<div id="mitte">
</div>
<div id="menue">
</div>
<div id="inhalt">
</div>
<div id="footer">
</div>
</div>
im div-container menue steht folgender code (verkürzt)
<ul id="treemenu1" class="treeview">
<li>Titel1
<ul>
<li>untertitel1
<ul>
<li id="inhalt"><a href="../pfad zur html.seite","untertitel1_1"></a></li> hier ist der Fehler???
<li>untertitel1_2</li>
</ul>
</li>
[......]
angezeigt werden soll eine Baumstruktur, welche auch funktioniert. nur wenn ich hier jetzt mit den code auf den untertitel1_1 klicke verschwindet die restliche Baumstruktur. wie kann man den inhalt dieses links auf die id="menue" anzeigen lassen und vermeiden das die restliche Baumstruktur ausgeblendet wird.
das treemenue verwendet java.

thanks for helping...​
 
Bist Du sicher, dass Du Java meinst? Nicht eher JavaScript?

Dein HTML-Code ist zudem fehlerhaft. Den solltest Du zuerst korrigieren.

Dann verstehe ich die Frage selbst auch nicht wirklich. Wenn man auf den Link klickt wird doch eine neue Seite geladen? Oder macht deine Java- (oder doch eher JavaScript-?)Programmierung hier irgendetwas? Wenn tatsächlich eine neue Seite geladen wird, dann musst Du auf dieser Seite CSS-Klassen setzen um das Menü so anzupassen wie Du es gerne hättest.
 
meinte javascript.
der html-code ist nur bruchteihaft funktioniert aber im original.
was ich meinte das wen man auf einen ziellink im menü klickt der inhalt der dort unterd en link angegeneben seite im div-containet (hier Id"inhalt") angezeigt wird
 
was ich meinte das wen man auf einen ziellink im menü klickt der inhalt der dort unterd en link angegeneben seite im div-containet (hier Id"inhalt") angezeigt wird

Wäre per Ajax machbar, ist aber eigentlich unüblich.

Normaler Weise wird beim Klick auf einen Link eine neue Seite geöffnet, und wenn dort wieder die Navigation angezeigt werden soll, dann muss sie auch auf dieser Seite im Code stehen.
 
Gib mal einen Link zur Seite.

Und etwas mehr Sorgfalt beim Verfassen von Postings wäre nicht schlecht.
Halbwegs korrekte Interpunktion und Groß-/Kleinschreibung sind in einem Forum bzw. allgemein bei schriftlicher Kommunikation auch ein Zeichen von Höflichkeit dem Gesprächspartner gegenüber. Wenn deine Problembeschreibungen immer nur „hingerotzt“ aussehen, dann steigert das bei den meisten Leuten vermutlich auch nicht gerade die Bereitschaft, dir weiter zu helfen. Bitte denk' da mal drüber nach.
 
seite ist noch nicht online, zumindest dieses menü.
hab es so gelöst wie Tronjer es geschieben hat ist es am einfachsten,. hier der Code:

Code:
<li <a href="../../link-zur-seite.html#inhalt">farbe</a></li>

Nur hab ich 325 links...ist doch ein wenig aufwendig jedes mal das Menü mit der kompletten Seite zu erstellen.
Das wären ja dann mindesten 325 einzelne Seiten, ist doch enorm auwendig, wenn jedesmal die komplette Seite geladen werden muss.
Das Menü bleibt nach anklicken offen. Bleibt es offen oder im Zustand wie beim klicken, nachdem die neue Seite mit dem kompletten Menü neu geladen wurde?
Ist es wirklich nicht möglich die Ziel-Seite unter dem Link wie oben in den div-container id="inhalt" anzeigen zu lassen?
 
stimmt...hatte es mir fast gedacht...
gibt es da eine Möglichkeit das bestehende Menü wie eben hier aufgebaut

Code:
<li <a href="../../link-zur-seite.html#inhalt">farbe</a></li>

zu benutzen oder muss da ein anderes her?
Wie würde dann die Änderung aussehen? Bin noch php-neuling
 
325 Links in der Hauptnavigation? Das wird ja ewig lang.

Wie schon erwähnt, kommst du da um Scriptsprachen nicht drum herum. Eine Möglichkeit wäre, die Navigation in einer separaten Datei zu speichern und mit PHP require() oder include() auf jeder Seite einzubinden. Bei 325 Links wäre es aber sinnvoller, eine Layout-Datei zu erstellen, in der sämtliche Seiteninhalte liegen, die auf allen Unterseiten identisch sind und die sich jeweils verändernden Inhalte zu inkludieren. Welcher Inhalt eingebunden und welcher Link gefärbt werden soll, lässt sich anhand der URL bestimmen.

Dazu musst dir aber vorab die Grundlagen in PHP aneignen. Mit ein paar Forentipps kann man das kaum verständlich erklären.
 
Ist eben deshalb ein Treemenue. Das Menü ist in einer separaten Seite schon vorhanden. Wie lst das gemeint
in der sämtliche Seiteninhalte liegen, die auf allen Unterseiten identisch sind und die sich jeweils verändernden Inhalte zu inkludieren. Welcher Inhalt eingebunden und welcher Link gefärbt werden soll, lässt sich anhand der URL bestimmen.
. Der Aufbau ist per css geregelt. Es ändert sich nur der Inhalt des inhalt-containers. Der Rest bleibt immer erhalten. Grundbegtiffe von php sind vorhanden. Gibt es ein Beispiel im Netz? Wüsste jetzt nicht wie ich suchen soll. thx
 
Was ich da beschrieben habe, war nur ein einfaches Entwurfsmuster.

- installiere einen Server (XAMPP falls Windows)
- speichere deine Seite als index.php und lade sie über den Webserver in den Browser
- schneide den sich verändernden Inhalt aus und speichere diesen als content_index.php im selben Verzeichnis
- schreibe in die index.php an der Stelle an welcher der Inhalt stand ein <? require('content_index.php') ?>

Wenn das funktioniert, musst du das 'content_inhalt.php' dynamisieren à la contentNameDerURL.php. Für die Zusammensetzung eines solchen Strings kann man $_SERVER['REQUEST_URI']) zerlegen. Aber mache erst mal den ersten Schritt.
 
Webserver ist schon installiert
Webseite ist auch schon als index.php gespeichert, wobei in dieser Seite auf eine .html seite verwiesen wird, die dann den restlichen Aufbau übernimmt.
Diese ist wie folgt aufgebaut:

HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel='stylesheet' type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="_styles.css" media="screen">

<script type="text/javascript" src="menu.js"></script>
<link rel="stylesheet" type="text/css" href="style-menue.css" />


<script language="JavaScript">
                <!-- Begin
                // news ticker function
                var newslist=new Array();
                var cnt=0;                        // current news item
                var curr = "";
                var i=-1;                        // current letter being typed

                newslist[0]=new Array("neue fotos:                                                              thüringentag sondershausen 2013 /// meissen city downhill 2013 /// ixs gdc ilmenau 2013 /// rdc steinach 2013  /// knorkator jena 08-09-2013")

                function newsticker()
                {
                        // next character of current item
                        if (i < newslist[cnt][0].length - 1)
                        {
                                i++;
                                temp1 = newslist[cnt][0];
                                temp1 = temp1.split('');
                                 curr = curr+temp1[i];
                                temp2 = newslist[cnt][1];
                                 mtxt.innerHTML = "<small><font color='#ff0000'>"+curr+"_</small></font></a>";
                                 setTimeout('newsticker()',50)
                                return;
                        }
                        // new item
                        i = -1; curr = "";
                        if (cnt<newslist.length-1)
                                cnt++;
                        else
                                cnt=0;
                        setTimeout('newsticker()',5000)
                }
                                //  End -->
                </script>

<style type="text/css">
<!--
scrollbar-base-color:#3f3f3f;
scrollbar-3dlight-color:#3f3f3f;
scrollbar-arrow-color:#3f3f3f;
scrollbar-darkshadow-color:#3f3f3f;
scrollbar-face-color:#3388AA;
scrollbar-highlight-color:#3f3f3f;
scrollbar-shadow-color:#3f3f3f;
scrollbar-track-color:#F3f3f3f;
-->
</style>  

<title></title>
</head>
<body style="background-color: #3F3F3F" text="#FF00FF">
    <div id="gesamt">
        <div id="header">
            <img border="0" src="pano.jpg" width="1360" height="150"><body bgcolor="#3f3f3f" text="#FF00FF">
        </div>
        <div id="mitte">
            <div id="menue">
               <ul id="treemenu1" class="treeview">
                   
<li>bauwerke
                        <ul>
[INDENT]                        <li>bauhaus-dessau
                            <ul>
[INDENT]                            <li <a href="../../pfad-zur-seite.html#inhalt">linkname1</a></li>
                            <li>linkname2</li>[/INDENT][/INDENT]
                            </ul>
                        </li>

                <script type="text/javascript">

                //ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))

                ddtreemenu.createTree("treemenu1", true)
                ddtreemenu.createTree("treemenu2", false)

</script>
            </div>
            <div id="inhalt">
               hier muss der sich zu ändernde Inhalt rein

            </div>       
        </div>
        <div id="footer">
           
            <script type="text/javascript">
                newsticker();
            </script>    
        </div>
    </div>

wie soll ich den inhalt aussschneiden? der sich ändert ist nur ein div-container in einer gesamten Seite. und jede dieser Seiten ist einzeln abgespeichert. Rest hab sich schon verstanden.
 
Eijeijeiundjei, jetzt denke doch bitte mal mit! Splitte die Seite so, dass du einzelne Teile hast. Wie genau, kannst nur du wissen. Wenn tatsächlich nur der Div "Inhalt" betroffen ist, dann reicht dir doch eine Dreiteilung: Alles vor dem Div, der Div Inhalt und alles nach dem Div. Dann brauchst du dass nur noch per include zusammenbauen und fertig.

Aber das ist nur eine von mehreren Möglichkeiten. Da muss man sich selber mal Gedanken drüber machen, denn man kennt ja nur selber den Inhalt der kompletten Homepage
 
Toll...so weit war ich auch schon...hab jetzt eine seite mit allen divs ohne den inhalt-div und eine in der nur der inhalt steht als content_index.php.
Ich bin nicht im Informatikbereich
tätig...zumindest hatte ich während des Studiums nicht so viel Informatik.
 
Ja und nu? Was sollen wir jetzt damit anfangen? Meinst du nicht, dass du uns etwas wenig Infos lieferst? Wie sehen deine Blöcke aus und wie setzt du sie mit PHP zusammen und wo ist jetzt genau dein Problem?

Außerdem wette ich, dass die meisten hier nicht wirklich viel Informatik studiert haben.
 
Wenn Sie meinen.
Wie gesagt das Problem liegt nur darin, dass es nur den aufgerufenen Link per Menü im dv-Container einer bestimmten id anzeigen soll. Das dies so kompliziert ist. Wenns (ein) Beispiel(e) im Internet gibt eigne ich es mir selber an. Hier wird einen wenig geholfen wenn man selbst wenig Ahnung hat. Dazu sind ja diese Foren da. Ist eine Anrede mit du bei Ihnen üblich? Sie machen mich nur runter. Geholfen haben Sie bisher nur bedingt. Wenn Sie es sich leisten können sich tagaus tagein mit solchen Dingen zu beschäftigen ist das schön für Sie. Ich kann es nicht. Deshalb frag ich ja in so ein Forum. Wie geschrieben, das es so (für mich) kompliziert ist wusste ich nicht.
 
Hier wird einen wenig geholfen
Das liegt daran, dass du zu wenig Infos lieferst. Ansonsten würde dir geholfen werden
Ist eine Anrede mit du bei Ihnen üblich?
In Foren wird immer geduzt
Sie machen mich nur runter.
Nein, tue ich nicht
Geholfen haben Sie bisher nur bedingt.
Wie gesagt, das liegt an fehlenden Infos deinerseits
Wenn Sie es sich leisten können sich tagaus tagein mit solchen Dingen zu beschäftigen ist das schön für Sie.
Ich beschäftige mich auch nicht den ganzen Tag mit solchen Dingen, allerdings habe ich mir die erforderlichen Grundlagen selbst angeeignet und im Laufe der Jahre dazugelernt
 
Wie gesagt das Problem liegt nur darin, dass es nur den aufgerufenen Link per Menü im dv-Container einer bestimmten id anzeigen soll.

Du hast den Ansatz nicht verstanden.

Erstelle zur Vereinfachung mal drei neue Dateien im selben Ordner. Die erste nennst du index.php, die zweite layout.php und die dritte content_index.php. In die index.php schreibst du nur eine einzige Zeile, nämlich: require('layout.php'). In die layout.php kommt ein HTML-Grundgerüst mit Doctype, Head und Body, und innerhalb der Body-Tags wieder nur eine einzige Zeile: require('content_index.php'), in die content_index.php eine Zeile Text à la "Ich bin die Index-Seite". Damit hast du drei kurze Dateien, die sich gegenseitig aufrufen. PHP-Tags darfst du natürlich nicht vergessen.

Im zweiten Schritt folgt die Dynamisierung. Die Datei layout.php soll als Grundgerüst sämtliche folgenden Unterseiten abbilden. Aus dem Grunde darf dort nicht require('content_index.php') stehen, sondern etwas wie require('content_' + die Adresse die oben im Browser steht). Insofern muss die URL ausgelesen und innerhalb des require() zu einem neuen String zusammengebaut werden. Das könnte etwa so aussehen:

ungetestet (nicht copy & pasten):
Code:
$url = end(explode('/', $_SERVER['REQUEST_URI']));

In der Datei layout.php ersetzt du anschließend das require('content_index.php') durch require('content_' . $url). Nun kannst du eine weitere Unterseite erstellen. Kopiere die Zeile aus der index.php in eine Datei namens subpage.php. Erstelle eine Datei namens content_subpage.php und schreibe dort rein: "Ich bin die Subpage." Ebenso wie zuvor die index.php wird auch die subpage.php die layout.php aufrufen.

Wenn das funktioniert und du das Prinzip verstanden hast, kannst du anfangen, die layout.php mit Inhalten wie Navigation, Footer, etc. auszustatten und die content_ Seiten mit den eigentlichen Inhalten zu füllen.
 
Das wäre ein Lösungweg, ich selber mache es etwas anders. Entweder gibt's nur eine index.php, die mit entsprechenden Parametern versehen wird, um die richtige Content-Datei zu includen
PHP:
<?php
   $page = isset($_GET['page']) ? $_GET['page'] : "index";
 
   switch ($page)
   {
      case 'index':      $includeFile = "./includes/index.php";      break;
      case 'news':       $includeFile = "./includes/news.php";       break;
      case 'impressum':  $includeFile = "./includes/impressum.php";  break;
      default:           $includeFile = "./includes/index.php";      break;
   }
  
   if (file_exists("./includes/header.php"))
     include ("./includes/header.php");
   else
     die("Header nicht vorhanden");
       
   if (file_exists($includeFile))
     include ($includeFile);
   else
     die("Content nicht vorhanden");
   
   if (file_exists("./includes/footer.php"))
     include ("./includes/footer.php");
   else
     die("Footer nicht vorhanden");
?>

Und wenn lieber einzelne Seiten gewünscht sind, da mache ich es so:
PHP:
<?php
   $includeFile = "./includes/" . basename(__FILE__);
 
   if (file_exists("./includes/header.php"))
     include ("./includes/header.php");
   else
     die("Header nicht vorhanden");
       
   if (file_exists($includeFile))
     include ($includeFile);
   else
     die("Content nicht vorhanden");
   
   if (file_exists("./includes/footer.php"))
     include ("./includes/footer.php");
   else
     die("Footer nicht vorhanden");
?>
 
Das wäre ein Lösungweg, ich selber mache es etwas anders. Entweder gibt's nur eine index.php, die mit entsprechenden Parametern versehen wird, um die richtige Content-Datei zu includen

Das war auch ein extrem vereinfachender Ansatz von mir. Bei 325(!) Unterseiten würde ich sicher ein Framework einsetzen und über Module, Parametrisierung und Routen nachdenken. Und wahrscheinlich zu dem Schluss gelangen, dass Rails eine schlankere Lösung liefert. :D
 
Zuletzt bearbeitet:
Zurück
Oben