是否可以在 DNN 皮肤中加载特定的 2sxc 模块?

Is it possible to load a specific 2sxc module in a DNN skin?

DNN 平台 9.3.2 / 2sxc 10.25.2

我有一个使用 2sxc 的 DNN 网站。我创建了一个 "Notification Bar" 内容类型和 c# razor 模板,用于向用户显示特殊通知。该模块旨在显示在网站的每个页面上。我使用 "Add Existing Module" 功能手动将模块添加到每个页面,但这有点麻烦,而且我 运行 我的内容编辑器可能会意外移动模块、删除或忘记将其添加到新页面页数。

是否有一个特殊的 2sxc 皮肤对象,我可以在我的 .ascx DNN 皮肤中使用它来加载 2sxc 模块,这样我就不必通过 DNN 将它添加到每个页面?显然在 DNN OpenContent 中有一个。

(不仅仅是通知栏,这对于偶尔更新的网站页眉或页脚非常有用。例如,社交媒体链接、地址或 phone 号码等联系信息,或其他不属于 DNN 页面菜单的链接。)

有两种方法

  1. 为这个特定模块创建一个面板(这是最容易编辑和使用的)并且只在所有页面上显示该模块

  2. 在隐藏页面上创建模块,然后将其注入皮肤,使用 Factory 获取 CmsBlock - 参见 https://docs.2sxc.org/api/dot-net/ToSic.Sxc.Dnn.Factory.html#ToSic_Sxc_Dnn_Factory_CmsBlock_System_Int32_System_Int32_

Daniel,我们过去就是这样做的。我注意到你的电话很相似但更简单(在评论上方)。那是因为 API 在 v10 之后的某个地方发生了变化吗?

<script runat="server">
// get 2sxc to Render() the output from the module on the SITE/Manage Flyout Links page
private IHtmlString RenderFlyoutMenu()
  {
    return ToSic.SexyContent.Environment.Dnn7.Factory.SxcInstanceForModule(3354, 606).Render();
  }
</script>
<%=RenderFlyoutMenu() %>