Hinterlasse einen Kommentar

DotNetNuke DDR Menü: Bug bei versteckten Seiten

Die aktuelle Version 02.00.01 des DDRMenu für DotNetNuke (Standard Menu seit DNN 6) enthält einen schlimmen Bug: Unter Umständen werden Unterseiten von versteckten Seiten nicht dargestellt. Unter Umständen meint folgendes:

  1. Ein Menü zeigt die Unterseiten (Level 2) der Hauptseiten (Level 1) über NodeSelector=“RootChildren“ oder „+0“ an
  2. Mindestens eine Seite ist so konfiguriert, nicht im Menü dargestellt zu werden (Seiteneinstellungen)
  3. Seite bei Punkt 2 hat Unterseiten

Problem

Alle Unterseiten einer versteckten Seite werden im Menü nicht angezeigt. Dieser Fehler ist im Issue Tracker des DDR Menü eingetragen, aber noch nicht behoben: http://dnnddrmenu.codeplex.com/workitem/11402

Da wir täglich mit DotNetNuke arbeiten, brauchten wir auch für dieses Problem eine Lösung. Und hier ist sie:

Lösung

Um den Fehler zu umgehen, gingen wir folgendermassen vor:

Davon ausgehend, dass das DDR Menü Seiten fälschlicherweise als versteckt behandelt, haben wir es zuerst so konfiguriert, dass alle versteckten Seiten ebenfalls dargestellt werden. Anschliessend haben wir das DDR Menü Template so angepasst, dass Seiten, die als versteckt gekennzeichnet sind, nicht mehr angezeigt werden. Damit haben wir selbst die Kontrolle darüber, welche Tabs angezeigt werden und welche nicht.

Schritt 1: Versteckte Tabs im Menü anzeigen

Über die Konfiguration des DDR Menüs lassen sich versteckte Tabs / Seiten im Menü anzeigen. Dazu setzt man den Parameter „IncludeHidden“ auf True. Mehr Informationen zur Konfiguration hier: http://www.dotnetnuke.com/Resources/Wiki/Page/DDRMenu-reference-guide.aspx

Schritt 2: DDR Menü Template anpassen

Voraussetzung dafür ist, dass man ein Razor Template (.cshtml) verwendet. Im Standard Razor Template findet sich folgende Schlaufe:

@foreach (var node in nodes) {

}

Alles innerhalb dieser Schlaufe muss nun in folgende Bedingung gepackt werden:

if(new TabController().GetTab(node.TabId, DotNetNuke.Entities.Portals.PortalSettings.Current.PortalId, false).IsVisible)
{
//… Code innerhalb dieser Bedinung wird nur ausgeführt, wenn die Bedinung wahr ist
}

Zuoberst in der .cshtml Datei muss folgendes noch angefügt werden:

@using DotNetNuke.Entities.Tabs;

Damit wird das Problem umgangen und die Unterseiten einer versteckten Seite werden korrekt dargestellt.

Ich hoffe, ich konnte dir hiermit helfen! Ansonsten schreib mir ein E-Mail auf
geeks@2sic.com

Liebe Grüsse
Raphael

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: