在 Orchard CMS 中隐藏区域

Hide zones in Orchard CMS

我正在寻找一种方法来隐藏 Orchard CMS 中某个特定页面上的某些区域,我使用的是 1.6.1 版。

我的问题的一些背景 - 网站上的每个页面都有 Layout.cshtml 文件中定义的页眉和页脚。对于网站上的一页,我想隐藏由 6 个区域组成的页眉和页脚。在 MVC 中,我会添加另一个布局文件并使用嵌套布局,但我知道这在 Orchard 中无法完成。

我有一个解决方案可以完成这项工作,但是我不喜欢它,因为它涉及将代码放入 Layout.cshtml 文件中,我的解决方案如下

if (Request.Url.PathAndQuery.Contains("register-1"))
{
    Model.Header1 = null;
    Model.Header2 = null;
    Model.Header3 = null;
    Model.Header4 = null;
    Model.Footer1 = null;
    Model.Footer2 = null;
}

这与像这样在输出区域之前进行空检查相结合

@if (Model.Header1 != null)
{
    <div id="layout-banner">
        @Zone(Model.Header1)
    </div>
}

有没有一种无需将代码放入 Layout.cshtml 文件即可执行此操作的方法?或者也许有更好的方法?

您可以为页面创建布局替代。如果只有一页,url 备用就可以了。

  1. 复制您的Layout.cshtml(从当前主题文件夹)
  2. 将其中一个重命名为 Layout-url-your-page-url.cshtml
  3. 您还应该激活 Url 替代模块

更多失败请查看http://docs.orchardproject.net/Documentation/Alternates

使用层隐藏小部件,使用 not url("~/register-1") 排除页面。放置在该层中的小部件不会出现在您的 register-1 页面上。