OrchardCMS从形状别名中的CustomType对象获取附着的布局零件
我正在尝试为我的Orchard网站构建一个组件。 我正在使用自定义ContentType和形状跟踪。 它的运行与我预期的完全一样,但其中一个部分是OrchardCMS从形状别名中的CustomType对象获取附着的布局零件,orchardcms,Orchardcms,我正在尝试为我的Orchard网站构建一个组件。 我正在使用自定义ContentType和形状跟踪。 它的运行与我预期的完全一样,但其中一个部分是LayoutPart。 我用来生成组件HTML结构的所有其他字段。 在它的中心,我将显示用户在它中间的LayoutPart中放入的任何内容 编辑 缺少Placement.info文本。 /EDIT ContentType具有以下字段(我正在使用这些字段构建html): ID(文本) NextItem(NextItem) ModuleType(文本)
LayoutPart
。
我用来生成组件HTML结构的所有其他字段。
在它的中心,我将显示用户在它中间的LayoutPart
中放入的任何内容
编辑
缺少Placement.info文本。
/EDIT
ContentType具有以下字段(我正在使用这些字段构建html):
- ID(文本)
- NextItem(NextItem)
- ModuleType(文本)
- 背景图片媒体图片
- 共同的
- 导航部件
- 布局部分
BuildDisplay(布局部分,“显示类型”)
我试着翻阅文档,用谷歌搜索。
我怀疑,因为我对Orchard和Razor都是新手,所以我还没有掌握正确的词汇
修正了,谢谢!
这是我的最终代码:
@使用Orchard.Utility.Extensions;
@采用果园管理;
@使用Orchard.Layouts.Models;
@使用Orchard.DisplayManagement.Shapes
@使用Orchard.Layouts.Helpers;
@{
var标签=标签(型号,“div”);
var id=Model.Content.Items[0]。值;
var css=Model.Content.Items[1].ContentField.Value;
var nextID=Model.Content.Items[2].ContentField.Value;
var backgroundPath=Model.Content.Items[3].ContentField.FirstMediaUrl;
var customstyle=“”;
如果(css==“模块英雄”)
{
css=“模块英雄全高度视差”;
customstyle=“背景图像:url(“+backgroundPath+”);背景大小:封面;背景附件:固定;背景位置:居中;背景重复:无重复;”;
}
else if(css==“模块伙伴”)
{
customstyle=“背景图像:url(“+backgroundPath+”);背景大小:封面;背景位置:相对;背景重复:不重复;溢出:隐藏;”;
}
}
@星电信
@显示器(型号视差超标)
@tag.EndElement
你要找的是形状调整。这里有一个介绍
其思路如下:
- 您想在页面上移动一个部分,但不想完全控制它的呈现,您只想将现有位移动到页面上的其他位置
形状重新定位
首先,在视图中创建一个新区域,根据需要命名。在您的情况下,它看起来像这样:
<div id="@id" style="background: url(@backgroundPath)" class="@css">
<div class="container">
<div class="row">
<div class="col-sm-12 m-t-250">
@Display(Model.MyNewCustomLayoutZone)
<div class="btn-list">
<a href="#@nextID" class="btn btn-outline smoothscroll"><i style="font-size: 60px" class="fa fa-angle-down"></i></a>
</div>
</div>
</div>
</div>
</div>
<Match ContentType="MyCustomContentType">
<Match DisplayType="Detail">
<Place Fields_Common_Text-ID="-" />
<Place Fields_NextItem-NextItem="-" />
<Place Fields_Common_Text-ModuleType="-" />
<Place Fields_MediaLibraryPicker-BackGroundImage="-" />
</Match>
</Match>
其中,MyCustomContentType
是您在第一步中所称的新内容类型,MyNewCustomLayoutZone
是您在第一步中所称的新区域
你如何找到零件布局位?
打开“形状跟踪”工具,转到要移动的零件/字段
在第一个选项卡中,您将看到一个条目形状,它告诉您这一点
实际上,您可以使用相同的技术在字段中移动
您不需要每次都创建一个新分区,您可以使用现有分区,例如:
<Place Parts_Layout="Footer" />
你要找的是形状调整。这里有一个介绍
其思路如下:
- 您想在页面上移动一个部分,但不想完全控制它的呈现,您只想将现有位移动到页面上的其他位置
形状重新定位
首先,在视图中创建一个新区域,根据需要命名。在您的情况下,它看起来像这样:
<div id="@id" style="background: url(@backgroundPath)" class="@css">
<div class="container">
<div class="row">
<div class="col-sm-12 m-t-250">
@Display(Model.MyNewCustomLayoutZone)
<div class="btn-list">
<a href="#@nextID" class="btn btn-outline smoothscroll"><i style="font-size: 60px" class="fa fa-angle-down"></i></a>
</div>
</div>
</div>
</div>
</div>
<Match ContentType="MyCustomContentType">
<Match DisplayType="Detail">
<Place Fields_Common_Text-ID="-" />
<Place Fields_NextItem-NextItem="-" />
<Place Fields_Common_Text-ModuleType="-" />
<Place Fields_MediaLibraryPicker-BackGroundImage="-" />
</Match>
</Match>
其中,MyCustomContentType
是您在第一步中所称的新内容类型,MyNewCustomLayoutZone
是您在第一步中所称的新区域
你如何找到零件布局位?
打开“形状跟踪”工具,转到要移动的零件/字段
在第一个选项卡中,您将看到一个条目形状,它告诉您这一点
实际上,您可以使用相同的技术在字段中移动
您不需要每次都创建一个新分区,您可以使用现有分区,例如:
<Place Parts_Layout="Footer" />
谢谢您的编辑。:)我在让stack exchange接受我的代码部分时遇到问题。这是令人沮丧的,因为我直接从VisualStudio剪切并粘贴了它,所有的格式都很好。:)谢谢您的编辑。:)我在让stack exchange接受我的代码部分时遇到问题。这是令人沮丧的,因为我直接从VisualStudio剪切并粘贴了它,所有的格式都很好。:)字段的名称为:ItemID、ModuleType、BackgroundImage、NextItemRefVar id=Model.Content.ItemID.Value;给出并出错“Model.Content.ItemID.Value'Model.Content.ItemID.Value'引发了类型为'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'dynamic{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}的异常,var part=Model.ContentItem.Content.LayoutPart;给出错误“无法将类型”System.Web.HtmlString“隐式转换为”字符串“layoutPart=BuildDisplay(part);gives error无法将类型“Orchard.UI.Zones.ZoneHolding”隐式转换为“string”。我不是在问字段部分,我想有更好的方法。但由于我是目前唯一的编码员,该部分暂时可以工作。我现在只需要布局我添加到我创建的ContentType中的部分。我不想要全部内容他们放在那里的任何东西都呈现为html。希望我能发布图片。字段的名称是:ItemID、ModuleType、BackgroundImage、NextItemRefVar id=Model.Content.ItemID.Value;给出和错误“Model.Content.ItemID”。