Hinterlasse einen Kommentar

DotNetNuke – Modul auf allen Seiten anzeigen bei mehrsprachigen Portalen

Sobald bei einem DotNetNuke Portal (ab Version 5) die Mehrsprachigkeit (Content Localization) aktiviert ist, wird die Funktion „Modul auf allen Seiten anzeigen“ nahezu unbrauchbar. Module werden teilweise mehrmals oder am falschen Ort geladen. Dies ist ärgerlich wenn z.B. News oder Kundenzitate auf jeder Seite angezeigt werden sollen.

Wir haben uns überlegt wie man ein Modul auf allen Seiten anzeigen könnte, ohne diese fehlerhafte Funktion zu verwenden. Unsere Lösung ermöglicht es, dass Module auf einer Seite bearbeitet werden und dann (als SkinObject) im Skin eingebunden werden können. Somit liegt die Kontrolle darüber, wo das Modul dargestellt wird, nicht mehr beim DotNetNuke, sondern im Skin.

Hier siehst du, wie unsere Lösung funktioniert (getestet auf DNN 5.5 & 6.1):

Ausgangslage: DNN 5+, mehrsprachig

Problemstellung: „Modul auf allen Seiten anzeigen“-Funktion ist nicht zuverlässig

Unser Lösungsansatz: Modul im Skin einbetten

  1. Zuerst brauchst du ein Modul, das du im Skin einbinden möchtest. Platziere dies auf einer Seite, auf der du schlussendlich alle Module platzierst, welche du im Skin einbinden möchtest.
  2. Stelle sicher, dass bei diesen Modulen die Funktion „Modul auf allen Seiten anzeigen“ deaktiviert ist. Denn diese Funktion ersetzen wir nun.
  3. Entpacke dieses ZIP in den Ordner /DesktopModules deiner DotNetNuke Installation. Das ZIP enthält Code, der ein Modul einbinden kann.
  4. Öffne die Skin-Datei, wo du das Modul einfügen möchtest.
  5. Füge folgende Zeile zuoberst in der Skin Datei an. Damit wird das SkinObject im Skin referenziert und kann verwendet werden.
    <%@ Register TagPrefix="ToSic" TagName="ModuleSkinObject" Src="~/DesktopModules/ToSic_ModuleSkinObject/ModuleSkinObject.ascx" %>
  6. An der Stelle, an der das Modul ausgegeben werden soll, füge folgende Zeile ein:
    <ToSic:ModuleSkinObject ModuleID="812" id="moduleSkinObject1" runat="server" visible="true" ContainerType="G" ContainerName="DarkKnight" ContainerSrc="Default.ascx" />

    Passe folgende Parameter deinen Bedürfnissen an:
    – ModuleID: Die ID des Moduls, das du anzeigen möchtest.
    – ContainerType: Den Typ des Containers, „G“ für Container im „_default“ Ordner (global) oder „L“ für Container im Portal-Ordner (local).
    – ContainerName: Der Name des Container-Ordners
    – ContainerSrc: Der Name des Container-Controls
    Container Type, ContainerName und ContainerSrc genauer beschrieben: http://www.dotnetnuke.com/Resources/Wiki/Page/Set-default-Container-for-Panes-in-your-Skin.aspx
  7. Wenn du deine Webseite nun anschaust, wird das Modul am angegebenen Ort angezeigt.

Downloads / Links

Ich hoffe die Anleitung hilft dir weiter, bei Fragen 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: