在 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 备用就可以了。
- 复制您的Layout.cshtml(从当前主题文件夹)
- 将其中一个重命名为 Layout-url-your-page-url.cshtml
- 您还应该激活 Url 替代模块
更多失败请查看http://docs.orchardproject.net/Documentation/Alternates
使用层隐藏小部件,使用 not url("~/register-1")
排除页面。放置在该层中的小部件不会出现在您的 register-1 页面上。
我正在寻找一种方法来隐藏 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 备用就可以了。
- 复制您的Layout.cshtml(从当前主题文件夹)
- 将其中一个重命名为 Layout-url-your-page-url.cshtml
- 您还应该激活 Url 替代模块
更多失败请查看http://docs.orchardproject.net/Documentation/Alternates
使用层隐藏小部件,使用 not url("~/register-1")
排除页面。放置在该层中的小部件不会出现在您的 register-1 页面上。