Marco Beffa: Grundlegende Frage zur erstellung einer Navigation

Hallo zusammen!

Ich beschäftige mich seit kurzem mit dem erstellen eines eigenen Webauftritts. Dazu verwende ich OpenCms und CSS Stylesheets.

Ich habe mich hierbei schon ziemlich gut eingearbeitet und kann designmässig bis jetz alles von mir gewünschte realisieren nur habe ich ein Grundlegendes Problem wie man die Navigation einer Homepage gestaltet:

Als ich mich vor ein paar Jahren schonmal mit dem Thema befasst habe, verwendete ich einfach eine auf Frames basierende Page. Wenn der User also in der Navigation einen Link angeklickt hat, konnte ich einfach bei target den Hauptanzeigebereich nennen und da wurde dann wie gewünschte Seite angezeigt.

Mit meinem CSS Layout habe ich nun den Bildschirm in <div> bereiche unterteilt. Was mir jetz nicht klar ist: Wie funktioniert dann die Geschichte mit der Navigation? Sagen wir mal der User klickt auf einen Link. Wie bringe ich es dann zustande dass mein <div> Element in der Bildschirmmitte mit dem Content geladen wird, welcher der User angewählt hat?

Ich verstehe das Grundprinzip hier noch nicht. Muss man hier die gesamte Seite (also auch inkl. Navigation) etc neu laden und dann irgendwie den gewünschten Content in der Mitte anzeigen? Oder wie machen das die Profis?

Die CSS Navigaton hier beim CSS Beispiel auf selfhtml hat mir viel geholfen, jedoch öffnet sich beim klick auf einen Link ein komplett neues Fenster. Für mein Projekt möchte ich jedoch dass nur der Content im Hauptbereich ändert.

Ist dies so möglich? Oder wie wird das professionel gemacht?

Mit freundlichen Grüsse:

Marco Beffa

  1. Hallo!

    Ich verstehe das Grundprinzip hier noch nicht. Muss man hier die gesamte Seite (also auch inkl. Navigation) etc neu laden und dann irgendwie den gewünschten Content in der Mitte anzeigen? Oder wie machen das die Profis?

    Bingo! Der Inhalt wird ja irgendwann von einer DB oder was auch immer eingespeist. Dort muss halt dafür gesorgt werden, dass aufgrund von einem URL Parameter / einer bestimmten URL der gewünschte Inhalt geladen wird.

    --
    LG,
    Snafu
  2. Hallo

    Ich weiss nicht, was eine professionelle Navigation ist. Ich weiss nur, was taugliche Navigationskonzepte sind und was nicht.
    Frames halte ich im Internet nicht für ein taugliches Instrument.

    Egal ob statische Seiten oder dynamisch erzeugte (auf der Seite des Servers), es wird immer eine komplette Seite ausgegeben.
    Auf den ersten Blick erscheint das kontraproduktiv.
    a) Soll denn nicht jede Seite die gleiche Navigation haben?
    b) ist das nicht viel unnötiger Code?

    zu a)
    Eine Navigation ist nur konzeptionell auf jeder Seite ähnlich, aber die konreten inhalte unterscheiden sich.
    In einem menu gibt es nämlich immer den Punkt der aktuellen Seite, der nicht als Link ausgeführt sein soll. Das ist der "Hier bin ich" Effekt.
    Komplexere Seiten mit vielen Sektionen werden zum beispiel nicht die komplette Navigation darstellen, sondern die pro Sektion wichtigen Teile, das heisst, die Untermenus sind verschieden.

    zu b)
    CSS-Files vorausgesetzt handelt es sich nicht um mehr Code, sondern um weniger, weil ja nur die relevanten Aspekte der Navigation übermittelt werden.

    Wie wird das umgesetzt?
    Das ist nun die komplexere Geschichte. Kontextbezogene Navigationen verlangen zuerst nach einer klaren hirarchischen Idee. Es braucht eine Liste, aus welcher man arbeitet.
    In dieser Liste muss zu jedem Eintrag Information vorliegen.

    • ist es ein globaler Menupunkt?
    • ist es eine Übersichtsseite?
    • welches ist die "Parentseite"? etc...
      Während man nun diese Information händisch zusammentragen muss, hat man nun die Wahl, aus dieser Information das im Kontext richtige Menu durch eine Serverseitige Technik erstellen zu lassen.
      Alternativ kann man mit einem lokalen Skript eventuell das gleiche erreichen, und dann die Ergebnisfiles hochladen.
      Oder man macht es nach händischer Methode.

    Auch bei letztendlich statischen Seiten würde ich ab 10 Seiten doch mindestens ein Script zu Hilfe nehmen, welche aus meinen Entwurfsfiles dann die fertigen HTML Seiten bastelt. Die Sprache meiner Wahl ist hier natürlich Perl.

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>      ><o(((°>
       <°)))o><                      ><o(((°>o
    1. Erst mal danke!

      Jetz wird mir schon einiges klarer. Die Erstellung einer solchen Liste hab ich bereits realisiert. Über eine JSP werden mir die Navigationseinträge automatisch erstellt.

      Was ich jetz noch tun muss, ist irgendwie einen Weg zu finden wie ich dann, falls der User auf einen Link klickt, die Seite neu lade mit dem gewünschten Content.

      Wie wird das gemacht? Ist hier URL Rewriting das Mittel der Wahl? Oder kann man das mit session.SetAttribute / getAttribute machen?

      Bei diesem Schritt blicke ich einfach noch nicht durch!

      Kann vieleicht irgendwo nachlesen wie das genau funktioniert?

      Mit freundlichen Grüssen,

      Marco Beffa

      1. Hallo

        Jetz wird mir schon einiges klarer. Die Erstellung einer solchen Liste hab ich bereits realisiert. Über eine JSP werden mir die Navigationseinträge automatisch erstellt.

        Was ich jetz noch tun muss, ist irgendwie einen Weg zu finden wie ich dann, falls der User auf einen Link klickt, die Seite neu lade mit dem gewünschten Content.

        Das erledigt doch dein CMS für dich. Du legst im Editor deine Ressourcen an und legst sie in einer Verzeichnisstruktur deiner Wahl ab. Wenn die Seite veröffentlicht wurde, wird sie vom CMS in die bestehende Struktur der Seite eingebunden, verlinkt und angezeigt.

        Wie dies genau geschieht, muss dich bei Verwendung eines CMS nicht interessieren. Wenn die Ausgabe aber nicht deinen Wünschen entspricht, kannst du den Programmcode des CMS, der die Ausgabe generiert, auch selbst ändern (lassen (kann ja nicht jeder)). OpenCms ist schließlich Open Source.

        Tschö, Auge

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.2
        1. Hallo Auge!

          Danke für deine Antwort.

          Nun, ich hab mr die JSP welche die Navigation etc. erzeugt selbst geschrieben..(war ja keine grosse sache, mit getNavigation und ein wenig Zugemüse)... d.h. ich verwende kein vorgefertigtes Template für mein eigenes Projekt. Deshalb wird mein Problem aber auch nicht bereits von OpenCms erledigt. Oder übersehe ich da etwas?

          Ist es gängige Praxis das Standarttemplate (TemplateTwo) zu verwenden und dann einfach über ein selbst erstelltes/abgeändertes CSS Stylesheet das gewünschte Layout zu erzeugen?

          1. Hallo

            Nun, ich hab mir die JSP welche die Navigation etc. erzeugt selbst geschrieben..(war ja keine grosse sache, mit getNavigation und ein wenig Zugemüse)... d.h. ich verwende kein vorgefertigtes Template für mein eigenes Projekt. Deshalb wird mein Problem aber auch nicht bereits von OpenCms erledigt. Oder übersehe ich da etwas?

            Wenn dein Skript grundsätzlich das[1] tut, was das entsprechende Skript/Codestück für das oder die Standardtemplate(s) macht[2], erledigt das auch dein Code. Ob das so ist, weiß ich ja nicht.

            Ist es gängige Praxis das Standarttemplate (TemplateTwo) zu verwenden und dann einfach über ein selbst erstelltes/abgeändertes CSS Stylesheet das gewünschte Layout zu erzeugen?

            Das wird oft so gemacht. Wenn aber die Dokumentation der Software so gut ist, dass man nachvollziehen kann, wie die Ausgabe erzeugt wird, kann man ein Template natürlich auch von Grund auf selbst erstellen bzw. an den Programmfunktionen herumschrauben um die gewünschte Ausgabe zu erzielen. Das bezieht sich auf die HTML-Ausgabe und schließt natürlich Änderungen an den Stylesheets mit ein.

            Für das von dir erwählte System kann ich dazu aber keine konkreten Aussagen machen, da ich es erstens nicht kenne und zweitens von JSP absolut keine Ahnung habe.

            [1] Das wäre, die Daten, in der sich die Struktur der Seite abbildet, von irgendwoher (z.B. Datenbank) auszulesen und den HTML-Code für die Navigation zu erzeugen und auszugeben.
            [2] Ich gehe zumindest davon aus, dass meine Beschreibung ([1]) zutrifft.

            Tschö, Auge

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
            1. Hallo!

              Sooo ich habs jetz hingekriegt :) Das CMS erledigt dieses Problem automatisch.

              Zuerst hatte ich folgende Konfiguration an JSP's:

              main.jsp    -> Stellt das Layout dar und lädt den Artikel und das Navigationstemplate
              artikel.jsp -> Erzeugt die Artikelseite aus dem gewünschten Content
              navigation.jsp  -> Erzeugt eine HTML Navigation aus der VFS Odernerstruktur des CMS

              Das Problem war, wie bereits beschrieben, dass ich nicht wusste wie ich den nun den gewählten Artikel anzeigen konnte (die Navigation etc. behalten). Damit muss man sich aber gar nicht herumschlagen wenn man es so macht:

              main.jsp -> Stellt das Layout dar und Enthält das Element "Artikel".
              navigation.jsp -> Selbe Funktion wie vorher.

              Erstellt man nun neuen Artikel Content, so wählt man als Template "main.jsp". Wird nun über die Navigation ein Artikel gewählt, wird die gesamte Page neu geladen und das Element "Artikel" des gewünschten Contents wird im Hauptfenster angezeigt. Da das Layout (Navigation, Top, Footer etc.) exakt so wie vorher dargestellt wird, sieht es aus als ob nur das Hauptfenster geändert hätte.

              Dank an alle für ihre Hinweise. Hatte einfach ein Brett vor dem Kopf ;)