mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 08.12.2016 19:36 Benutzername: Passwort: Auto-Login

Thema: [Frames] Mit, ohne oder IFrames - Was ist das Beste? vom 05.08.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Allgemeines - Nonprint -> [Frames] Mit, ohne oder IFrames - Was ist das Beste?
Seite: 1, 2  Weiter
Autor Nachricht
loozy
Threadersteller

Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht: Weiblich
Verfasst Fr 05.08.2005 12:24
Titel

[Frames] Mit, ohne oder IFrames - Was ist das Beste?

Antworten mit Zitat Zum Seitenanfang

Wenn ich eine private Seite aufbaue nehm ich immer iframes. Ob das die beste Lösung ist weiß ich nicht, aber die einfachste bisher.

Kann ich bei Klick auf 1 Link 2 iframes ändern?
macht es Sinn eine Navigationsleiste in einen iframe zu hauen?

wie würdet Ihr eine Seite professionell aufbauen auf der rechts oben eine Hauptnavigation ist und links eine unternavigation. (links oben befindet sich das firmenlogo)
Mit scripten hatte ich noch nicht besonders viel zu tun deswegen bin ich auch für jeden Vorschlag in diese Richtung dankbar!

Danke für Eure Vorschläge.


Zuletzt bearbeitet von shakadi am Fr 05.08.2005 12:27, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Havok

Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 36
Geschlecht: Männlich
Verfasst Fr 05.08.2005 15:13
Titel

Antworten mit Zitat Zum Seitenanfang

Frames = Evil Grins

Frames sind meines Erachtens keine gute Lösung.
- Die Seite ist "zerrupft" -> Probleme für Crawler/Robots, alle Seitenteile korrekt zu indizieren
- XHTML mag keine Frames, in der Strict-Variante z.B. ein ungültiger Tag


Ich würde Navigationen dynamisch per Script (z.B. PHP) erzeugen und laden.
Hat versch. Vorteile:
- die Navigation ist auf jeder Seite gleich
- leicht anpassbar über eine zentrale Konfiguration
- XHTML konform.
- Kein Problem für Robots und wenn richtig angelegt auch barrierefrei
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
mcbethy

Dabei seit: 02.12.2002
Ort: Hamburg
Alter: 33
Geschlecht: Weiblich
Verfasst Fr 05.08.2005 15:19
Titel

Antworten mit Zitat Zum Seitenanfang

Hmm...
ob Frames oder iFrames Sinn machen, hängt vermutlich von der Komplexität deiner Seite ab. Aber grundsätzlich würde ich von iFrames in einem professionellen Internetauftritt abraten. Es sei denn, dass es auf Biegen und Brechen absolut keine andere (tragbare) Möglichkeit gibt.

Frames haben den Nachteil, dass sie suchmaschinenunfreundlich sind und ein Script zum Nachladen des Framesets erfolderlich machen. Und ich glaube, für iFrames gibt es nicht einmal die Möglichkeit den "Rahmen" nachzuladen. Wenn doch, dann würde mich das auch einmal interessieren.

Wie ich eine Seite aufbauen würde, hängt wirklich vom Entwurf ab. Welche Anforderungen soll deine Navigation erfüllen? Aufwendige Effekte, Zustände etc.? Ließe sich die Seite auch frameless umsetzen?
Ohne Anschauungsmaterial ist es schwierig hilfreiche Tipps zu geben. Lächel
  View user's profile Private Nachricht senden
loozy
Threadersteller

Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht: Weiblich
Verfasst Fr 05.08.2005 15:19
Titel

Antworten mit Zitat Zum Seitenanfang

Okay Aktion 1 ist für mich also Buch kaufen "PHP für Dummies" Lächel Danke für deine Meinung dazu!
  View user's profile Private Nachricht senden
Havok

Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 36
Geschlecht: Männlich
Verfasst Fr 05.08.2005 15:21
Titel

Antworten mit Zitat Zum Seitenanfang

Ein kleines Beispielscript.

- Warum eine Klasse? -> Mehrer Instanzen möglich, d.h. mehrere Navigationen auf einer Seite
- Es werden Listen erzeugt, welche sich per CSS layouten lassen -> standardkonform und barrierefrei
- Es lassen sich eigene Templates einbinden
...


Die Definition
Code:

<?php
/**
*   Navigationsverwaltung fuer Websites
*   @author Havok
*   @since Fri Aug 05 16:00:00 CEST 2005
*   @version 1.0
*/


/*
*   Format der Navigationspfade:
*
*   NameNavpunktEbene0;NameNavpunktEbene1;NameNavpunktEbene2 usw.
*   z.B.: Leistungen;Web;Hosting
*
* ----
*
*   Format der Navigationspunkt-Struktur:
*   
*   $structure['NameNavPunkt']['link'] = Link relativ zum Basisverzeichnises
*   $structure['NameNavPunkt']['children'] = naechst tiefere Navigationsebene
*
* ----
*
*   Gueltige Platzhalter in Templates:
*
*   %IDLEVEL%         IDs der einzelnen Navigationsebenen
*   %ITEMS%            Navigationspunkte
*   
*   %ACTIVE%         Klasseneintrag bei aktivem Element
*   %CONTENT%         Navigationspunktinhalt
*   %CHILDREN%         Tiefere Navigationsebene
*
*/


/*******************************************************************************
*   Klasse: navigation
*
*******************************************************************************/
class navigation {
   /*=== Attribute ===*/
   var $sitebase;
   var $selection_default;
   var $xhtmlid;
   var $structure;
   var $templates;
   
   /*=== Methoden ===*/
   
   /*-------------------------------*/
   /*--- navigation::__construct ---*/
   function navigation($sitebase, $selection_default, $xhtmlid) {
      if($sitebase)
         $this->sitebase = $sitebase;
         
      if($selection_default)
         $this->selection_default = $selection_default;
         
      if($xhtmlid)
         $this->xhtmlid = $xhtmlid;
      
      // Standard-Templates definieren
      $this->templates['default'] = "\n<ul id=\"".$this->xhtmlid."%IDLEVEL%\">\n%ITEMS%</ul>\n";      
      $this->templates['default-item'] = "<li%ACTIVE%>%CONTENT%%CHILDREN%</li>\n";
   }
   
   /*---------------------------------*/
   /*--- navigation::set_structure ---*/
   function set_structure($structure) {
      $return_value = false;
      
      if($structure)
      {
         $this->structure = $structure;
         $return_value = true;
      }
      
      return $return_value;
   }
   
   /*---------------------------------*/
   /*--- navigation::set_template ---*/
   function set_template($template, $id) {
      $return_value = false;
      
      if($template && $id)
      {
         $this->templates['$id'] = $template;
      }
   }
   
   /*-------------------------*/
   /*--- navigation::xhtml ---*/
   function xhtml($selection) {
      
      if(!$selection)
         $selection = $this->selection_default;
      
      // Struktur zuruecksetzen und durchlaufen
      reset($this->structure);
      return $this->xhtml_nav($this->structure, $selection, 0);
   }
   
   /*-----------------------------*/
   /*--- navigation::xhtml_nav ---*/
   function xhtml_nav($structure, $selection, $level)
   {
      $xhtml = "";
      
      if(is_array($structure))
      {
         $cut_pos = strpos($selection, ";");
         if($cut_pos)
         {
            $selection_cut = substr($selection, $cut_pos+1);
            $active = substr($selection, 0, $cut_pos);
         }
         else
         {
            $active = $selection;
            $selection = "";
         }
         
         // Listen-Template laden
         $index = "level".$level;
         $index_item = $index."-item";
         if(isset($this->templates[$index]))
            $xhtml = $this->templates[$index];
         else
            $xhtml = $this->templates['default'];
         
         // ID eintragen
         $xhtml = str_replace("%IDLEVEL%", "-level".$level, $xhtml);
         
         
         // Navigationspunkte generieren
         $items = "";
         while($kv_item = each($structure))
         {
            // Item-Template laden
            if(isset($this->templates[$index_item]))
               $item = $this->templates[$index_item];
            else
               $item = $this->templates['default-item'];
         
            // Link/Text eintragen
            $item = str_replace("%CONTENT%", "<a href=\"".$this->path_prefix().$kv_item['value']['link']."\">".$kv_item['key']."</a>", $item);
            
            // Wenn aktiv, Klasse setzen und tiefere Ebene generieren
            if($kv_item['key'] == $active)
            {
               $item = str_replace("%ACTIVE%", " class=\"active\"", $item);
            
               // Naechst tiefere Ebene generieren
               if(isset($kv_item['value']['children']))
                  $item = str_replace("%CHILDREN%", $this->xhtml_nav($kv_item['value']['children'], $selection_cut, $level+1), $item);
            }
            else
               $item = str_replace("%ACTIVE%", "", $item);
         
            
            // Ungenutzte Platzhalter loeschen
            $item = str_replace("%CHILDREN%", "", $item);
            
            $items .= $item;         
         }
         
         // Navigationspunkte eintragen
         $xhtml = str_replace("%ITEMS%", $items, $xhtml);
      }
      
      return $xhtml;
   }

   /*-------------------------------*/
   /*--- navigation::path_prefix ---*/
   function path_prefix() {
      $num = count(explode("/", str_replace($this->sitebase, "", $_SERVER['PHP_SELF'])));
      
      $prefix = "";
      for($i = 1; $i < $num; $i++)
         $prefix .= "../";
      
      return $prefix;
   }
   
}

?>



Anwendung
Code:

<?php
/**
*   Navigation
*   @author Havok
*   @since Fri Aug 05 16:15:00 CEST 2005
*   @version 1.0
*/

include_once("inc_navigation.php");

/*=== Allgemeine Definitionen ===*/
$Sitebase = "/"; // <-- Hier Basisverzeichnis eintragen
$NavPathDefault = "";  // <-- Stadard-Navigationspfad


/*=== Hauptnavigation */
$NavLeistungen['Print']['link'] = "leistungen/print/index.php";
$NavLeistungen['Web']['link'] = "leistungen/web/index.php";
$NavLeistungen['Elektronische Medien']['link'] = "leistungen/emedien/index.php";
$NavLeistungen['Gewinnspiele/Audiotex']['link'] = "leistungen/audiotex/index.php";

$NavReferenzen['Print']['link'] = "referenzen/print/index.php";
$NavReferenzen['Web']['link'] = "referenzen/web/index.php";
$NavReferenzen['Elektronische Medien']['link'] = "referenzen/emedien/index.php";
$NavReferenzen['Gewinnspiele/Audiotex']['link'] = "referenzen/audiotex/index.php";

$NavKontakt['Ansprechpartner']['link'] = "kontakt/index.php";
$NavKontakt['Anfahrt']['link'] = "kontakt/anfahrt.php";

$NavHaupt['Leistungen']['link'] = "leistungen/index.php";
$NavHaupt['Referenzen']['link'] = "referenzen/index.php";
$NavHaupt['Jobs']['link'] = "jobs/index.php";
$NavHaupt['Kontakt']['link'] = "kontakt/index.php";
$NavHaupt['Anbieter']['link'] = "anbieter/index.php";

$NavHaupt['Leistungen']['children'] = &$NavLeistungen;
$NavHaupt['Referenzen']['children'] = &$NavReferenzen;
$NavHaupt['Kontakt']['children'] = &$NavKontakt;



/*=== Code ===*/
if(!isset($NavPath))
   $NavPath = "";

// Instanz erzeugen und Struktur laden
$Navigation = new navigation($Sitebase, $NavPathDefault, "navi");
$Navigation->set_structure($NavHaupt);

// Und ab gehts...
echo $Navigation->xhtml($NavPath);
?>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
loozy
Threadersteller

Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht: Weiblich
Verfasst Fr 05.08.2005 15:48
Titel

Antworten mit Zitat Zum Seitenanfang

Sorry dass ich so dumm Frage ich bin bei php grade so weit gekommen dass ich den Besucher je nach Tageszeit begrüssen könnte. Wohin gehört die Definition - in eine extra Datei?
  View user's profile Private Nachricht senden
Havok

Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 36
Geschlecht: Männlich
Verfasst Fr 05.08.2005 15:51
Titel

Antworten mit Zitat Zum Seitenanfang

Jepp.
Ich hatte die Definition in "inc_navigation.php", die Navigation selber in "navigation.php"

In deine Seite an die passende Stelle includieren mit <?php include("navigation.php"); ?>

Achja:
Und auf jeder Seite sollte der aktive Navigationspfad gesetzt sein.
Bei obigem Beispiel etwa: $NavPath = "Leistungen;Web"
würde die Navigationspunkte "Leistungen" und den Unterpunkt "Web" aufklappen.


Zuletzt bearbeitet von Havok am Fr 05.08.2005 15:54, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
loozy
Threadersteller

Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht: Weiblich
Verfasst Fr 05.08.2005 16:22
Titel

Antworten mit Zitat Zum Seitenanfang

Okay Test1 hab ich bestanden ich hab jetzt die navigation! Wo setz ich denn den Navigationspfad hin. Ich will zwar nicht dass man mir alles zutragen muss aber ich habs jetzt eine halbe Stunde vergeblich überall hingesetzt.

Danke für deine Hilfe Lächel
  View user's profile Private Nachricht senden
 
Ähnliche Themen [Frames] Linkfarben ändern in zwei Frames gleichzeitig
frames in frames scrollen
[iframes] browserkompatibilität
IFrames verändern.
iframes und opera
Anordnungsprobleme mit Iframes
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Allgemeines - Nonprint


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.