2009-06-29 9 views
1

Ich habe diese Frage im SilverStripe-Forum gestellt, aber noch nicht an einem Tag gehört. http://silverstripe.org/customising-the-cms/show/263604#post263604Anpassen des Navigationsmenüs in SilverStripe

Ich bin dabei, eine statische PHP-basierte Site + Wordpress zu SilverStripe zu migrieren.

In den statischen Seiten passen wir die Kopfzeile selbst an. Wir haben zwei Arten von Logins. Kunden und Partner.

In der statischen Website heute, tun wir etwas wie folgt aus:

<? require("_header_top.html"); ?> 
<? if (isset($display_affiliate_link) && $display_affiliate_link == true) { 
require("_header_middle_affiliate.html"); 
} else { 
require("_header_middle.html"); 
} ?> 
<? require("_header_bottom.html"); ?> 

Dies ist der einzige Unterschied im Navigationsmenü zwischen den Affiliate und Kunden Abschnitte.

Ich habe versucht, den anderen Layout-Pfad zu gehen. Aber ich bevorzuge es nicht, da die Layouts zu 99% gleich aussehen.

Ich versuchte den folgenden Hack, der funktioniert, aber ich mag es überhaupt nicht.

<% if MenuTitle = Affiliate %> 
<a href="/affiliate_login>affiliate login</a> 
<% end_if %> 
<a href="/subscriber_login>subscriber login</a> 

Irgendwelche Vorschläge, wie ich dies eleganter oder eine besser empfohlene Möglichkeit erreichen kann, dies zu implementieren?

Vikram

Antwort

1

Ich verstehe nicht, was mit falsch ist, was du getan hast ... Andere Umgehungen wären:

  • eine „Typ“ Eigenschaft für Ihren Seitenbaum Seite Objekt hinzufügen, um zu zwischen einem Kunden und einem Partner trennen.
  • Innerhalb des SiteTree-Objekt-Controllers können Sie die Funktion "customize" verwenden, die entweder ein Array oder ein Objekt empfängt und durch Aufrufen der im Controller verfügbaren Funktion "renderWith" das Array/Objekt mit einer Vorlagendatei rendert (.SS-Dateien). Auf diese Weise wird Ihr Layout für einen Kunden und einen Partner in verschiedene .SS-Dateien aufgeteilt.