Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
loozy
Threadersteller
Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht:
|
Verfasst Fr 05.08.2005 13:24
Titel [Frames] Mit, ohne oder IFrames - Was ist das Beste? |
|
|
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 13:27, insgesamt 1-mal bearbeitet
|
|
|
|
|
Havok
Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 43
Geschlecht:
|
Verfasst Fr 05.08.2005 16:13
Titel
|
|
|
Frames = Evil
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
|
|
|
|
|
Anzeige
|
|
|
mcbethy
Dabei seit: 02.12.2002
Ort: Hamburg
Alter: 41
Geschlecht:
|
Verfasst Fr 05.08.2005 16:19
Titel
|
|
|
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.
|
|
|
|
|
loozy
Threadersteller
Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht:
|
Verfasst Fr 05.08.2005 16:19
Titel
|
|
|
Okay Aktion 1 ist für mich also Buch kaufen "PHP für Dummies" Danke für deine Meinung dazu!
|
|
|
|
|
Havok
Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 43
Geschlecht:
|
Verfasst Fr 05.08.2005 16:21
Titel
|
|
|
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);
?>
|
|
|
|
|
|
loozy
Threadersteller
Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht:
|
Verfasst Fr 05.08.2005 16:48
Titel
|
|
|
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?
|
|
|
|
|
Havok
Dabei seit: 05.08.2005
Ort: Nürnberg
Alter: 43
Geschlecht:
|
Verfasst Fr 05.08.2005 16:51
Titel
|
|
|
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 16:54, insgesamt 1-mal bearbeitet
|
|
|
|
|
loozy
Threadersteller
Dabei seit: 12.03.2002
Ort: Nürnberg
Alter: -
Geschlecht:
|
Verfasst Fr 05.08.2005 17:22
Titel
|
|
|
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
|
|
|
|
|
|
|
|
Ähnliche Themen |
[Frames] Linkfarben ändern in zwei Frames gleichzeitig
frames in frames scrollen
Iframes bei nem IE5.1 - MAC
iframes und opera
zwei iframes
Anordnungsprobleme mit Iframes
|
|
|
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.
|
|