在 Piranha CMS 中访问全球站点区域
Posted
技术标签:
【中文标题】在 Piranha CMS 中访问全球站点区域【英文标题】:Accessing global site regions in Piranha CMS 【发布时间】:2014-09-23 03:39:27 【问题描述】:我已向我的站点添加了一个全局站点区域,并在其中填充了一些内容。如何从页面视图和/或布局中读取此内容?
【问题讨论】:
【参考方案1】:此功能在 WebPages 和 MVC 之间略有不同,原因是在 WebPages(如 WebForms)中,布局页面的模型与正在执行的实际页面不同。如果您使用网页,您只需在布局页面中首先添加以下行:
@inherits Piranha.WebPages.LayoutPage
这将自动加载布局页面模型和所有全局区域。
如果您使用的是 MVC,则无法自动完成,因为 Layout 没有模型。您可以在布局页面中简单地添加以下内容:
@
Piranha.Models.PageModel global;
if (HttpContext.Current.Items["Piranha_CurrentPage"] != null)
var current =
(Piranha.Models.Page)HttpContext.Current.Items["Piranha_CurrentPage"];
global = Piranha.Models.PageModel.GetBySite(current.SiteTreeId);
else
global = Piranha.Models.PageModel.GetBySite(Piranha.Config.SiteTreeId);
这个 sn-p 从以下位置加载布局页面:
-
如果显示的是页面,则会加载该页面所在的站点树
如果是帖子,它会从当前站点加载站点树。
希望对您有所帮助!
问候
/哈坎
【讨论】:
HttpContext 需要 .Current 如果它在视图中。此外,演员应该是 Piranha.Models.Page,而不是 Piranha.Models.PageModel。 PageModel 不包含 SiteTreeId 属性。 :) 谢谢!我一定度过了糟糕的一天:)以上是关于在 Piranha CMS 中访问全球站点区域的主要内容,如果未能解决你的问题,请参考以下文章