Orchardcms Orchard CMS:登录页面不';我无法使用自定义布局
我对乌节很陌生 我在Minty主题的基础上创建了一个新主题。唯一真正的变化是布局,在这里我修改了现有asp.net母版页中的html,以匹配orchard风格的razor layout.cshtml。我有MVC和razor的经验,所以在这方面没有问题。。。除非我错过了重要的事情 问题是登录页面。单击“登录”链接会将我带到正确的url,不会出现错误,但不会呈现登录表单。我通过检查google chrome中的元素检查了这种情况 我知道,设置小部件等,我可以使内容出现。但是,我找不到在请求登录url时如何插入登录表单。我假设它使用Orchard.Users模块,但不确定如何使用。它需要一个特定的区域吗?我看不出为什么,但看看还有什么别的办法 结果,我无法解决我的问题 有什么建议吗 有任何书籍或其他学习媒体吗 my layout.cshtml的代码是:Orchardcms Orchard CMS:登录页面不';我无法使用自定义布局,orchardcms,Orchardcms,我对乌节很陌生 我在Minty主题的基础上创建了一个新主题。唯一真正的变化是布局,在这里我修改了现有asp.net母版页中的html,以匹配orchard风格的razor layout.cshtml。我有MVC和razor的经验,所以在这方面没有问题。。。除非我错过了重要的事情 问题是登录页面。单击“登录”链接会将我带到正确的url,不会出现错误,但不会呈现登录表单。我通过检查google chrome中的元素检查了这种情况 我知道,设置小部件等,我可以使内容出现。但是,我找不到在请求登录url
@functions {
// To support the layout classifaction below. Implementing as a razor function because we can, could otherwise be a Func<string[], string, string> in the code block following.
string CalcuClassify(string[] zoneNames, string classNamePrefix) {
var zoneCounter = 0;
var zoneNumsFilled = string.Join("", zoneNames.Select(zoneName => { ++zoneCounter; return Model[zoneName] != null ? zoneCounter.ToString() : "";}).ToArray());
return HasText(zoneNumsFilled) ? classNamePrefix + zoneNumsFilled : "";
}
}
@{
/* Global includes for the theme
***************************************************************/
SetMeta("X-UA-Compatible", "IE=edge,chrome=1");
Style.Include("http://fonts.googleapis.com/css?family=Handlee");
Style.Include("http://html5shiv.googlecode.com/svn/trunk/html5.js");
Style.Include("site.css");
Script.Require("jQuery").AtHead();
Script.Require("jQueryUI_Core").AtHead();
Script.Require("jQueryUI_Tabs").AtHead();
Script.Include("http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.4/modernizr.min.js").AtHead();
Style.Include("TagDefaults.css");
Style.Include("LayoutStructure.css");
Style.Include("LayoutStyling.css");
Style.Include("TopMenu.css");
Style.Include("LeftBlock.css");
Style.Include("RightBlock.css");
Style.Include("MenuAdapter.css");
Style.Include("Content.css");
Style.Include("FloatedBoxes.css");
Style.Include("Helen.css");
/* Some useful shortcuts or settings
***************************************************************/
Func<dynamic, dynamic> Zone = x => Display(x); // Zone as an alias for Display to help make it obvious when we're displaying zones
/* Layout classification based on filled zones
***************************************************************/
//Add classes to the wrapper div to toggle aside widget zones on and off
var asideClass = CalcuClassify(new [] {"Sidebar"}, "aside-"); // for aside-1, aside-2 or aside-12 if any of the aside zones are filled
if (HasText(asideClass)) {
Model.Classes.Add(asideClass);
}
//Add classes to the wrapper div to toggle tripel widget zones on and off
var tripelClass = CalcuClassify(new [] {"TripelFirst", "TripelSecond", "TripelThird"}, "tripel-"); // for tripel-1, triple-2, etc. if any of the tripel zones are filled
if (HasText(tripelClass)) {
Model.Classes.Add(tripelClass);
}
//Add classes to the wrapper div to toggle quad widget zones on and off
var footerQuadClass = CalcuClassify(new [] {"FooterQuadFirst", "FooterQuadSecond", "FooterQuadThird", "FooterQuadFourth"}, "split-"); // for quad-1, quad-2, etc. if any of the quad zones are filled
if (HasText(footerQuadClass)) {
Model.Classes.Add(footerQuadClass);
}
var slideshowClass = CalcuClassify(new[] {"HomeSlideshow"}, "slideshow-");
if (HasText(slideshowClass)) {
Model.Classes.Add(slideshowClass);
}
/* Inserting some ad hoc shapes
***************************************************************/
//WorkContext.Layout.Header.Add(New.Branding(), "5"); // Site name and link to the home page
//WorkContext.Layout.Footer.Add(New.BadgeOfHonor(), "5"); // Powered by Orchard
WorkContext.Layout.Footer.Add(New.User(), "10"); // Login and dashboard links
/* Last bit of code to prep the layout wrapper
***************************************************************/
Model.Id = "layout-wrapper";
var tag = Tag(Model, "div"); // using Tag so the layout div gets the classes, id and other attributes added to the Model
}
@tag.StartElement
<a name="top"></a>
<div id="SiteHeader">
</div>
<div id="PageContainer">
<div style="position: absolute; Left:-80px; top:-88px;z-index:1000;">
<img id="bird" title="Pheasant" src="/Themes/TheFarmsBlogs/Styles/Images/PositionedImages/pheasant.gif" />
</div>
<div class="SiteMenu"><p>Hello Menu</p></div>
<div id="Specialized">
<div id="PageName">
<!--
PageName NOT in use!
-->
</div>
@if (Model.RightColumn != null) {
<div id="RightCol">
@Zone(Model.RightColumn)
</div>
}
<!-- Page divided into two main columns, of which the left column is subdivided as necessary -->
<div id="LeftCol">
<div id="PageBanner">
<div id="PageBannerLeft">
@if (Model.MainImage != null) {
<div id="PageBannerImage">
@Zone(Model.MainImage)
</div>
}
@if(Model.TheStrip != null) {
<div id="TheStrip">
@Zone(Model.TheStrip)
</div>
}
</div>
</div>
<div id="SpecializedContent">
@if(@Model.content != null)
{
@Zone(Model.content)
}
</div>
</div>
<div id="SpecializedFooter">
</div>
</div>
<div id="PageFooter">
@if (Model.FooterPage != null){
@Zone(Model.FooterPage)
}
</div>
</div>
<div id="SiteFooter">
@Display(Model.Footer)
The Farms Ltd - © 2007
</div>
@tag.EndElement
@函数{
//支持下面的布局分类。作为razor函数实现,因为我们可以,否则可能是下面代码块中的Func。
字符串CalculateClassify(字符串[]zoneNames,字符串classNamePrefix){
var zoneCounter=0;
var zoneumsfilled=string.Join(“,zoneNames.Select(zoneName=>{++zoneCounter;返回模型[zoneName]!=null?zoneCounter.ToString():”;}).ToArray();
返回HasText(ZoneumsFilled)?classNamePrefix+ZoneumsFilled:;
}
}
@{
/*主题的全球范围
***************************************************************/
SetMeta(“X-UA-Compatible”,“IE=edge,chrome=1”);
样式。包括(“http://fonts.googleapis.com/css?family=Handlee");
样式。包括(“http://html5shiv.googlecode.com/svn/trunk/html5.js");
样式。包括(“site.css”);
Script.Require(“jQuery”).AtHead();
Script.Require(“jQueryUI_Core”).AtHead();
Script.Require(“jQueryUI_选项卡”).AtHead();
脚本。包括(“http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.4/modernizr.min.js().AtHead();
包括(“TagDefaults.css”);
包括(“LayoutStructure.css”);
样式。包括(“LayoutStyling.css”);
样式。包括(“TopMenu.css”);
样式。包括(“LeftBlock.css”);
样式。包括(“RightBlock.css”);
样式。包括(“MenuAdapter.css”);
包括(“Content.css”);
样式。包括(“flootedboxes.css”);
风格。包括(“Helen.css”);
/*一些有用的快捷方式或设置
***************************************************************/
Func Zone=x=>Display(x);//将Zone作为显示的别名,有助于在显示分区时使其清晰可见
/*基于填充区域的布局分类
***************************************************************/
//将类添加到包装器div以打开和关闭窗口小部件区域
var asideClass=CalcuClassify(新[]{“侧边栏”},“aside-”);//如果任何一个aside区域已填充,则为aside-1、aside-2或aside-12
if(HasText(asideClass)){
Model.Classes.Add(asideClass);
}
//向包装器div添加类以打开和关闭tripel小部件区域
var tripelClass=CalculateClassification(新[]{“TripelFirst”、“TripelSecond”、“TripelHird”},“tripel-”);//对于tripel-1、triple-2等,如果填充了任何tripel区域
if(HasText(tripelClass)){
Model.Classes.Add(tripelClass);
}
//将类添加到包装器div以打开和关闭四个小部件区域
var footerQuadClass=CalculateClassify(新[]{“FooterQuadFirst”、“FooterQuadSecond”、“FooterQuadThird”、“FooterQuadFourth”},“split-”);//对于四元分区1、四元分区2等,如果填充了任何四元分区
if(HasText(类)){
Model.Classes.Add(footerQuadClass);
}
var slideshowClass=CalculateClassification(新[]{“HomeSlideshow”},“slideshow-”);
if(HasText(幻灯片类)){
Model.Classes.Add(slideshowClass);
}
/*插入一些特殊形状
***************************************************************/
//WorkContext.Layout.Header.Add(New.Branding(),“5”);//站点名称和到主页的链接
//WorkContext.Layout.Footer.Add(New.BadgeOfHonor(),“5”);//由Orchard提供动力
WorkContext.Layout.Footer.Add(New.User(),“10”);//登录和仪表板链接
/*准备布局包装器的最后一段代码
***************************************************************/
Model.Id=“布局包装器”;
var tag=tag(Model,“div”);//使用tag以便布局div获得添加到模型中的类、id和其他属性
}
@星电信
你好菜单
@if(Model.RightColumn!=null){
@分区(模型右侧列)
}
@如果(Model.MainImage!=null){
@区域(Model.MainImage)
}
@如果(Model.TheStrip!=null){
@区域(型号:TheStrip)
}
@如果(@Model.content!=null)
{
@区域(Model.content)
}
@如果(Model.FooterPage!=null){
@区域(模型页脚)
}
@显示(Model.Footer)
农场有限公司-复印件;2007
@tag.EndElement
注:品牌和荣誉徽章被注释掉了,因为我只是一点一点地消除错误的根源。它将在现场进行
增编:
见下面伯特兰·勒罗伊的答案。Orchard.Users模块