Abrufen der Navigation
Alle Menüs innerhalb eines Centauri Shops sind Navigationen mit beliebig viele Navigations-Elementen in beliebig vielen Hierarchien (d.h. jedes Navigations-Element kann wieder Navigations-Elemente beinhalten).
Typische Beispiele für Menüs sind das Hauptmenü mit den Produktkategorien und die Links im Fußbereich.
Die per Pages System angelegte Navigation (üblicherweise zumindest eine MAIN und eine FOOTER Navigation) kann entweder
über das Objektmodell mit Hilfe der Centauri.Shop.Pages.Navigation Klasse und Razor-Code in den Views
über Javascript und REST Calls über den Pages Controlller
abgerufen werde.
Abrufen der Navigation per Objektmodell
Innerhalb der Razor Seite oder im Model der View muß zunächst ein Centauri.Shop.Pages.Navigation Objekt angelegt werden. Das Objekt bekommt im Konstruktor die Identifikation des gewünschten Menüs verwendet werden.
Danach werden von diesem Objekt die Element in der Items Collection abgerufen und damit der HTML Code für das Menü aufgebaut.
<ul>
@foreach (Centauri.Shop.Pages.NavigationItem item in new Centauri.Shop.Pages.Navigation("MAIN").ExpandedItems)
{
<li><a href="#">@item.Caption</a></li>
}
</ul>
Abruf per Javascript
Der Pages Controller stellt Methoden
zum Abrufen der Haupt-Menüpunkte einer Navigation
zum Abrufen eines Untermenüs innerhalb einer Navigation (inklusive Untermenü-Punkte)
Jeder der beiden Calls ist zum Abrufen über den numerischen Id (…ById) oder zum Abrufen über den Identifier (…ByIdentifier) verfügbar. Wichtig: Identifier ist NICHT gleich Menüname.
Um das Hauptmenü mit dem Identifier MAIN über den Identifier abzurufen, wird folgender Call verwendet:
https://www.company.com/page/getMenuByIdentifier/?identifier=MAIN
Üblicherweise ist in einem Shop zumindest eine Navigation mit dem Identifier MAIN und eine Navigation mit dem Identifier FOOTER für die Links im Fußbereich vorhanden.
Der Call liefert ein JSON der Form:
{
"content":[
{
"id":"1055",
"title":"Praxis \u0026 Büro",
"url":""
},
{
"id":"1056",
"title":"Labor",
"url":""
},
{
"id":"1057",
"title":"Injektion \u0026 Infusion",
"url":""
}
]
}
Um das Hauptmenü mit dem Id 2 über die Id abzurufen, wird folgender Call verwendet:
https://www.company.com/page/getMenuById/?id=2
Üblicherweise ist in einem Shop zumindest eine Navigation für das Hauptmenü und für den Fußbereich vorhanden. Die numerische Id sollte normalerweise nur verwendet werden, wenn sie aus einem anderen Funktionsaufruf bekannt ist. Keinesfalls sollten fixe numerische Ids im Javascript Code verwendet werden.
Das resultierende JSON ist identisch mit dem obigen Aufruf.
Um das Untermenü mit der Identifikation AKTION abzurufen, wird folgender Call verwendet:
https://www.company.com/page/getSubmenuByIdentifier/?identifier=AKTION
Der Identifier muss in den Admin Pages für den jeweiligen Menüpunkt hinterlegt werden.
{
"advertisement":{
"imgUrl":"http://MC-dev.wyru.net/img/MC/novak-banner.jpg",
"body":"Exklusiv auf hohem Niveau",
"url":"http://MC-dev.wyru.net/novak"
},
"content":[
{
"content":[
{
"icon":"",
"title":"Autoklaven \u0026 Sterilisatoren",
"body":"",
"url":""
},
{
"icon":"",
"title":"Kühlschränke",
"body":"",
"url":""
},
{
"icon":"",
"title":"Leitern \u0026 Auftritte",
"body":"",
"url":""
},
{
"icon":"",
"title":"Luftreiniger \u0026-erfrischer",
"body":"",
"url":""
},
{
"icon":"",
"title":"Sichtschutzsysteme",
"body":"",
"url":""
},
{
"icon":"",
"title":"Spender \u0026 Zubehör",
"body":"",
"url":""
},
{
"icon":"",
"title":"Untersuchungsleuchten",
"body":"",
"url":""
},
{
"icon":"",
"title":"Weitere Praxiseinrichtung",
"body":"",
"url":""
},
{
"icon":"",
"title":"Anatomische Modelle \u0026 Lehrtafeln",
"body":"",
"url":""
}
],
"title":"Praxiseinrichtungen",
"subtitle":""
},
{
"content":[
{
"icon":"",
"title":"Arztkoffer",
"body":"",
"url":""
},
{
"icon":"",
"title":"Arzttaschen",
"body":"",
"url":""
},
{
"icon":"",
"title":"Ampularien \u0026 Instrumenten Etuis",
"body":"",
"url":""
},
{
"icon":"",
"title":"Labor- \u0026 Kühltaschen",
"body":"",
"url":""
},
{
"icon":"",
"title":"Rezept- \u0026 Fomulartaschen",
"body":"",
"url":""
}
],
"title":"Arzttaschen \u0026-koffer",
"subtitle":""
}
],
"title":"die richtigen Instrumente finden",
"style":"1"
}
Um das Untermenü mit der Id 1055 über die Id abzurufen, wird folgender Call verwendet:
https://www.company.com/page/getSubmenuById/?id=1055
Die numerische Id wird normalerweise innerhalb der Razor View mit dem Objektmodul ermittelt oder durch einen Aufruf von getMenuById bzw. getMenuByIdentifier.
Verschiedene Menü-Styles
Um Unterschiedliche Menüarten darzustellen (nur eine Menümenüebene mit großen Icons für jeden Menüpunkt oder zweistufige Menüs und Werbebanner pro Menü usw.) hat jedes Untermenü einen Style Parameter, der im Layout jeweils unterschiedlich dargestellt wird.
Innerhalb des Objekt-Modells ist dieser Style-Parameter nur ein String. Ob in diesem Feld 1 oder 2 oder STYLE1 oder STYLE2 oder SIMPLE oder EXTENDED verwendet wird, muss nur zwischen Webdesigner und Redaktion vereinbart werden.
Erstellen der Navigation über die Admin Pages
Die Menüs werden in der Admin mit dem Modul Navigation in der Kategorie Seiten erstellt.
Navigation in der Shop Datenbank
Alle Menüs eines Shops werden in den Tabellen pagenavigations und pagenavigationitems gespeichert.
Feldname | Feldtyp |
navigationID | int |
identifier | varchar(50) |
Name | varchar(255) |
Feldname | Feldtyp |
navigationitemID | int |
parentID | int |
navigationID | int |
identifier | varchar(50) |
type | varchar(50) |
caption | varchar(50) |
url | varchar(250) |
target | varchar(50) |
position | int |
loggedin | varchar(5) |
punchout | varchar(5) |
visible | varchar(5) |
supervisor | varchar(5) |
seller | varchar(5) |
teaser | varchar(MAX) |
picture_prev | varchar(255) |
subtitle | varchar(255) |
style | varchar(30) |