在Orchard CMS中隐藏区域

时间:2015-07-22 10:55:08

标签: orchardcms orchardcms-1.6

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

我的问题的一些背景 - 网站上的每个页面都有Layout.cshtml文件中定义的页眉和页脚。对于网站上的1页我想隐藏由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文件的情况下执行此操作?或者也许有更好的方法在一起?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以为页面创建替代布局。如果只有一个页面,则url alternate适合。

  1. 复制Layout.cshtml(从当前主题文件夹)
  2. 将其重命名为Layout-url-your-page-url.cshtml
  3. 您还应激活Url Alternates Module
  4. 有关详细信息,请查看http://docs.orchardproject.net/Documentation/Alternates