為實現新視窗編輯/檢視內容,需自建 Edit.aspx。但這不會破壞 DNN 架構,只要遵守四大原則:不影響開發結構、不任意增刪現有結構、確保無新頁面時 DNN 正常運作、底層解析仍由 DNN 處理。
Default.aspx 及其代碼後置檔,重命名為 Edit.aspx。Edit.aspx 放入網站根目錄,.aspx.vb 放同目錄或編譯後的 .dll 放入 bin 目錄。Edit.aspx.vb 中的 Page_Init 方法,調整皮膚載入邏輯:Dim strSkinSrc As String = PortalSettings.ActiveTab.SkinSrc.Replace(".ascx", "_mini.ascx")
' skin preview
If (Not Request.QueryString("SkinSrc") Is Nothing) Then
PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(QueryStringDecode(Request.QueryString("SkinSrc")) & ".ascx", PortalSettings)
ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
End If
' load user skin (based on cookie)
If ctlSkin Is Nothing Then
If Not Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString) Is Nothing Then
If Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString).Value <> "" Then
PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString).Value & ".ascx", PortalSettings)
ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
End If
End If
End If
' load assigned skin
If ctlSkin Is Nothing Then
If IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab) Then
Dim objSkin As UI.Skins.SkinInfo
objSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalSettings.PortalId, SkinType.Admin)
If Not objSkin Is Nothing Then
PortalSettings.ActiveTab.SkinSrc = objSkin.SkinSrc
Else
PortalSettings.ActiveTab.SkinSrc = ""
End If
End If
If PortalSettings.ActiveTab.SkinSrc <> "" Then
PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(strSkinSrc, PortalSettings)
ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
End If
End If
' error loading skin - load default
If ctlSkin Is Nothing Then
If IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab) Then
PortalSettings.ActiveTab.SkinSrc = Common.Globals.HostPath & SkinInfo.RootSkin & DefaultSkin.Folder & DefaultSkin.AdminDefaultName
Else
PortalSettings.ActiveTab.SkinSrc = Common.Globals.HostPath & SkinInfo.RootSkin & DefaultSkin.Folder & DefaultSkin.DefaultName
End If
ctlSkin = LoadSkin(strSkinSrc)
End If
' set skin path
PortalSettings.ActiveTab.SkinPath = SkinController.FormatSkinPath(strSkinSrc)
關鍵在於將預設皮膚改為 _mini.ascx(極簡版),並保留完整的皮膚解析流程,確保新視窗僅呈現模組內容,不包含全站導航、Banner 等干擾元素。