我为自定义主题创建了LogOn和NotFound视图的自定义版本,是否可以更改它们在其中呈现的区域?有没有办法改变LogOn和NotFound视图的区域
我试过把<Place LogOn="MobileContent:1"/>
放入placement.info
文件无济于事。
我为自定义主题创建了LogOn和NotFound视图的自定义版本,是否可以更改它们在其中呈现的区域?有没有办法改变LogOn和NotFound视图的区域
我试过把<Place LogOn="MobileContent:1"/>
放入placement.info
文件无济于事。
LogOn呈现为内容,我不认为您可以通过展示位置更改此设置。为什么要把它渲染到别的地方?
您是否希望将其他内容与登录表单一起显示?您需要为此创建一个小部件。我做了一个小模块,虽然如果我说实话,我没有真正测试过它,我不确定我会信任那么多^ _ ^但是,代码是可用的,应该指向正确的方向。
https://modaccountwidgets.codeplex.com/
或者,如果你感觉勇敢,它是在画廊,准备安装;)
https://gallery.orchardproject.net/List/Modules/Orchard.Module.Contrib.Mod.AccountWidgets
编辑
登录只是一个形状所以你理论上可以覆盖登录网址
yield return new RouteDescriptor
{
Priority = 1000,
Route = new Route("Users/Account/LogOn",
new RouteValueDictionary {
{"area", Area},
{"controller", "MyController"},
{"action", "LogOn"},
},
new RouteValueDictionary(),
new RouteValueDictionary { { "area", Area } },
new MvcRouteHandler())
};
然后在这里创建您的登录形状并将其发送到您想要使用IWorkContextAccessor的区域(将其注入到您的新控制器中),例如。
var logon = _orchardServices.New.LogOn().Title(T("Log On").Text);
contextAccessor.GetContext().Layout.Zones["MobileContent"].Add(logon, 1);
但是,我可以想象这会变得相当混乱。你可能想重新思考你是如何做到这一点的。虽然有人可能有更好的解决方案:)
我们有2个自定义主题,一个用于桌面版本的网站,另一个用于移动。桌面主题包含内容区域,但我们故意将其排除在移动主题之外,因此它不会输出用于桌面站点的任何窗口小部件。所以MobileContent区域是移动主题的主要内容区域。 –
编辑,虽然我会建议保持内容区域;) – Hazza
但是,如果我保留内容区域,我会在我以前的评论中遇到问题。你知道一种避免它的方法吗?例如,我们可以通过隐藏小部件来解决这个问题,但我们希望避免由于带宽原因而将小部件完全发送到浏览器 –