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
- 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.
- Stelle sicher, dass bei diesen Modulen die Funktion „Modul auf allen Seiten anzeigen“ deaktiviert ist. Denn diese Funktion ersetzen wir nun.
- Entpacke dieses ZIP in den Ordner /DesktopModules deiner DotNetNuke Installation. Das ZIP enthält Code, der ein Modul einbinden kann.
- Öffne die Skin-Datei, wo du das Modul einfügen möchtest.
- 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" %>
- 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 - Wenn du deine Webseite nun anschaust, wird das Modul am angegebenen Ort angezeigt.
Downloads / Links
- ZIP File mit dem Module SkinObject
- Standardcontainer für Pane im Skin festlegen
- Eingesetzt bei Eckold, ML-Website (9 Sprachen)
Ich hoffe die Anleitung hilft dir weiter, bei Fragen schreib mir ein E-Mail auf geeks@2sic.com.
Liebe Grüsse
Raphael