Unsichtbare Menüeinträge oder >25 Seiten
![Klick für Großansicht](../../images/pic_25-unterwarengruppen_160.jpg)
Freie Gestaltung für den Designer
Das Limit ist zwar technisch 25 Untewarengruppen oder Hauptseiten unter einer anderen Hauptseite. Aber es geht mehr.
Manchmal will man mehr als 25 Seiten unter einer Hauptseite haben. Aber Shoptodate und Webtodate erlauben nur immer 25 Seiten unter einer Hauptseite. Als Unterseiten sind immerhin 99 Unterseiten möglich.
» Beispiel
Will man aber gezielt eine Struktur haben mit mehr als 25 Aufgliederungen geht das im normalen Funktionsumfang mit webtodate nicht. Aber mit einigen Kniffen und umbauten geht es doch. Dazu braucht man einfach eine oder mehrere Seiten, die man keinem zeigen wird. Aber leider gibt es keine unsichtbaren Hauptseite (Note: in neuen Versionen von webtodate gibt es diese Funktion. Die Änderungen am Design sind damit geringer geworden). Hier beschreibe ich, wie man doch "unsichtbare" Hauptseiten machen kann und wie man daraus mehr als 25 Seiten pro Hauptseite zusammenstellen kann. Hauptseiten können bei Shoptodate auch Unterwarengruppen sein. Die folgende Lösung ist also für Shoptodate identisch zu verwenden. Das folgende zu realisieren, setzt etwas CCML Kenntnisse und allgemeine HTML / CSS Kenntnisse voraus. Sichern Sie aber vorher unbedingt Ihre Design-Daten. Dann haben Sie immer einen sicheren Status, um zurückzusetzen.
Lösungsansatz
![Klick für Großansicht](../../images/unsichtbar_160.jpg)
unsichtbar?
Es wird nur der Name der Seite "#unsichtbar" genannt. Der Seitentitel lang kann weiterhin sinnvoll genutzt werden, um einen ansprechenden Seitentitel dem User anzuzeigen. Der Dateiname wiederum kann index.php oder einen anderen Namen haben.
Der Trick ist, dass der Seitentitel "#unsichtbar" ist. Der Seitentitel dient nur im Projekt und nur intern zu Organisation der Seiten. Auch wenn der Langtitel heißt "Mein Produkt ist toll" wird in webtodate nur mit den Seitentitel gearbeitet. Der User hingegen sieht aber nie den Seitentitel, sondern nur den Seitenlangtitel. Die URL selber kann nat. kein "#" enthalten. Der Dateiname der Internetseite kann weiterhin index.php oder einen anderen Namen haben. Da nur Hauptseiten einen Seitentitel und einen Seitenlangtitel haben, kann für diese Struktur nur mit echten Hauptseiten gearbeitet werden. Unterseiten haben nur einen einzigen Seitentitel. Daher würde auf Unterseiten der User den Namen "#unsichtbar" als Seitentitel der Seite sehen.
Begriffserklärung:
- Seitentitel ist in der oberen Box und unrelevant für den User, nur für das Projekt sichtbar.
- Seitenlangtitel wird auf der Seite ausgegeben und ist relevant für den User und sollte dem Seiteninhalt entsprechen.
- Dateiname ist bei Hauptseiten idR. index.php, kann aber wenn gewüncht frei vergehben werden.
Hauptseite der 1. Ebene ist Hauptseite unter der Startseite
Hauptseite der 2. Ebene ist Hauptseite unter einer Hauptseite der 1. Ebene
...
Aufbau des Projektes
![Klick für Großansicht](../../images/unsichtbar-verzeichnis_160.jpg)
Verzeichnis und Dateinamen
Unter HTML lassen sich unabhängig von den Titeln der Dateiname und der Verzeichnisname festlegen. Alle Informationen sind unabhängig und können einzeln gepflegt werden.
Beispiel: Ich will dem Besucher Hauptseiten mit je 30 Seiten suggerieren und weiß, dass nur 25 Seiten wirklich in webtodate eingegeben werden können.
Man hat einen Menü-Baum mit Hauptseiten der 1. Ebene Namens namens "Auto", "Motorräder" und ergänzt jetzt eine dritte Hauptseite der 1. Ebene mit Titel "#unsichtbar" ein. Unter diese Seite hänge ich zwei weitere Seiten mit "#unsichtbar" und url-Name "unsicht1/index.php" und "unsicht2/index.php".
Unter "#unsichtbar (unsicht1)" hänge ich die ersten 20 Seiten (5 Platz zum späteren einfügen) und unter "#unsicht (unsicht2)" hänge ich die anderen 10.
Aufbau
- Startseite
Hauptseite Ebene 1
Titel="Meine Autos"
Seitenlangtitel="Meine 30 Autos"
url=www.domain/Autos/index.php
Hauptseite Ebene 1
Titel="Meine Motorräder"
Seitenlangtitel="Meine 30 Motorräder"
url=www.domain/Motorraeder/index.php
Hauptseite Ebene 1
Titel="#unsichtbar"
Seitenlangtitel="unrelevant"
url=www.domain/unsichtbar/index.php
Hauptseite Ebene 2
Seitentitel="#unsichtbar"
Seitenlangtitel="unrelevant"
url=www.domain/unsichtbar/unrelevant 1/index.php
Hauptseite Ebene 3
Seitentitel="#unsichtbar"
Seitenlangtitel="Mein erstes Auto"
url=www.domain/unsichtbar/unrelevant/Erstes Auto/index.php
Hauptseite Ebene 3
Seitentitel="#unsichtbar"
Seitenlangtitel="Mein zweites Auto"
url=www.domain/unsichtbar/unrelevant/Zweites Auto/index.php
bis
Hauptseite Ebene 3
Seitentitel="#unsichtbar"
Seitenlangtitel="Mein 20. Auto"
url=www.domain/unsichtbar/unrelevant/Zwanzigstes Auto/index.php
( 5 Hauptseiten sind noch frei)
Hauptseite Ebene 2
Seitentitel="#unsichtbar"
Seitenlangtitel="unrelevant"
url=www.domain/unsichtbar/unrelevant 2/index.php
Hauptseite Ebene 3
Seitentitel="#unsichtbar"
Seitenlangtitel="Mein 21. Auto"
url=www.domain/unsichtbar/unrelevant 2/Einunzwangig Auto/index.php
bis
Hauptseite Ebene 3
Seitentitel="#unsichtbar"
Seitenlangtitel="Mein 30. Auto"
url=www.domain/unsichtbar/unrelevant 2/Zdreissigstes Auto/index.php
( 15 Hauptseiten sind noch frei)
und dann weiter un der Struktur mit 30 Motorrädern
Modifikation in navigation.ccml
Mit dem CCML Code s.u. (Änderung in der Navigation.ccml im Bereich der Menüausgabe) kann ich nun dafür sorgen, dass ein Menüpunkt auf eine Seiten mit Titel "#unsichtbar" nicht ausgegeben wird. Auch
die Seiten der Ebene 2 mit "#unsichtbar" werden nicht ausgegeben. Das muss ich dann für die Menü der zweiten und dritten Ebene wiederholen: dass die Seiten als Menüpunkte nicht ausgegeben werden, wenn deren maintopic "#unsichtbar" heißt. Damit blende ich den gesamten Ast "#unsichtbar / unsichtbar 1 und unsichtbar 2 und alle echten Hauptseiten darunter" komplett aus. D.h. diese sind einfach in der Menüstruktur nicht mehr sichtbar.
Alter Code:
<cc:if cond="&page.topiccount gt 0">
<h2><cc:print value="&page.maintopic.caption">:</h2>
<cc:loop type="topic" obj="mytopic" maintopic="&page.maintopic.number">
<p><a href="<cc:print value="&mytopic.url">"><cc:print value="&mytopic.caption"></a></p>
</cc:loop>
Jetzt kommt der neue Code (mit PHP). Innerhalb der Schleife (also nach dem Loop) setzen wir die Variable "pagecaption" mit dem Namen Seite im Menüeintrag. Ist er nicht gleich "#unsichtbar" wird die alte Codesquenze ausgeführt bis ein " } " den Ausführungsblock beendet. Heißt die Seite aber "#unsichtbar" dann wird einfach nichts ausgegeben und der Menüpunkt übersprungen. Voila: Fertig
Neue Code (für die erste Ebene):
<cc:if cond="&page.topiccount gt 0">
<h2><cc:print value="&page.maintopic.caption">:</h2>
<cc:loop type="topic" obj="mytopic" maintopic="&page.maintopic.number">
<?php
$pagecaption = "<cc:print value="&mytopic.caption">";
if ($pagecaption !="#unsichtbar") {
echo "<p><a href=\"<cc:print value="&mytopic.url">\"><cc:print value="&mytopic.caption"></a></p>"; }
?>
</cc:loop>
Natürlich muss das dann auch für die 2. Ebene und die 3. Ebene wiederholt werden. Und die Seitennamen sollten keine Anführungszeichen haben, sonst ist der PHP Code fehlerhaft.
Wie man dann auf die 30 Seiten kommt.... muss man irgendwie mit Teasern und Links lösen. z.B. indem ich in die Kontextspalte einen Aufmacher setze, mit der Ausgabe von "Nur Titel". Diese Liste von Seitentitel, die eigentlich nur ein Aufmacher sind, kann man optisch mit CSS so gestalten, dass Sie von einem Menüeintrag nicht mehr unterscheidbar sind. Wenn Sie links bei mir auf einer echten Unterseite sind, dann finden Sie dennoch einen Eintrag im Menü. Das ist aber technisch gar kein Menü, sondern ein Aufmacher aller Unterseiten. D.h. diesen Trick einen Aufmacher zu nutzen um ein Menü zu simulieren ist in meinem Design bereits komplett realisiert.
Modifikation in der sidebar_teasercaption.ccml
In teaser_caption.ccml findet man die wichtigsten Anweisungen, die auch für die Kontextspalte unter /common/sidebar_teasercaption.ccml vorzufinden sind. Es ist eine Frage an das Design, wie man und wo man einen Aufmacher plazieren will, der das Menü ersetzen soll
<cc:print value="&myteaserelement.url"> ist der Zugriff auf die URL.
<cc:print value="&myteaserelement.caption"> ist der Seitentitel.
Hat man also eine Liste von Seiten in einem Aufmacher wirkt der Aufmacher noch nicht ganz wie ein Menü. Die aktuelle Seite wird leider nicht hervorgehoben. Das muss man optisch ändern. Man kann prüfen, ob die aktuelle URL auch gleichzeitig die URL des Aufmachers ist. Ist diese Prüfung erfolgreich, dann wird eine Klasse (Style) mit der <span-Anweisung gesetzt und später beendet. Damit kann man einem normalen Menü eine sehr ähnlich Optik verleihen, weil die aktuell ausgewählte Seite in der Lister der Seiten hervorgehoben wird.
Alter Code:
<cc:loop type="teaserelement" obj="myteaserelement">
<a name="title<cc:print value="¶.uid">t<cc:print value="&pageteasercount">"></a>
<cc:set obj="pageteasercount" value="&pageteasercount+1">
<p class="teasertext">
» <a class="teaserlink" href="<cc:print value="&myteaserelement.url">"><cc:print value="&myteaserelement.caption"></a>
<cc:if cond="&myteaserelement.id">(<cc:print value="&myteaserelement.id">)</cc:if>
<cc:if cond="&myteaserelement.price"><em><cc:print value="&myteaserelement.price"></em></cc:if>
</p>
</cc:loop>
Neuer Code (ungetestet):
<cc:loop type="teaserelement" obj="myteaserelement">
<a name="title<cc:print value="¶.uid">t<cc:print value="&pageteasercount">"></a>
<cc:set obj="pageteasercount" value="&pageteasercount+1">
<p class="teasertext">
<?php $teaserurl="<cc:print value="&myteaserelement.url">";
$actualurl = "http://".$_SERVER['PHP_SELF'].$_SERVER['REQUEST_URI'];
if ($teaserurl==$actualurl){ echo "<span class=\"highlighted\">";}
?>
» <a class="teaserlink" href="<cc:print value="&myteaserelement.url">"><cc:print value="&myteaserelement.caption"></a>
<cc:if cond="&myteaserelement.id">(<cc:print value="&myteaserelement.id">)</cc:if>
<cc:if cond="&myteaserelement.price"><em><cc:print value="&myteaserelement.price"></em></cc:if>
<?php if ($teaserurl==$actualurl){ echo "</span>";}
?>
</p>
</cc:loop>
Es bleibt ein optische negativer Effekt. In der Adresszeile sieht man die URL. Also sollte man die Verzeichnisnamen nicht wie in meiner Strukturerklärung "unsichtbar" oder "unrelevant" nennen, weil das den Besucher irritieren könnte. Weit unauffälliger wären Verzeichnisnamen wie "Autos A-M" und "Autos N-Z". Dann ist die URL optisch korrekt, ein Menü wird durch einen Aufmacher suggeriert, die zusätzlichen Hauptseiten sind unsichtbar und die Struktur erlaubt dann zumindest optisch beliebig viele Seiten unter einer Hauptseite.
Beispiel siehe » hier
.
Wenn Sie Hilfe brauchen, das in Ihrem Design zu realisieren ... nun dann helfe ich Ihnen gerne.