翻译Orchard的文档 Alternates(候补)

前面看了关于显示不同页面的文章,就找了下Orchard关于Alternates的文档看了下,下面我进行了翻译,需要的可以看看。
自己理解的是,根据命名规范,创建了显示页面,不用通过Driver和placement.info的设置就可以自动匹配到对应的页面。不知道是不是这样的,有时间会进行验证。
下面是我的翻译:

候补
候补是为主题在特定情况下自定义渲染形状而实现的可选的变化的形状。利用候补,你可以重写呈现内容的模板,基于内容的类型(或其他特征)。例如,你可以使用候补将一个布局文件应用于首页,另一个布局文件应用于子页面。后者你可以使用候补通过不同的方式分别渲染在页面和博客中的标签。当你有不同的内容类型并且你想自定义不同类型的显示时,候补是非常有用的。
框架使用命名规范来决定是否使用候补模板来渲染内容。命名规范可以使您添加的模板文件自动应用,而不需要修改任何代码。
候补命名规范
候补形状使用基本形状的名字后面跟双下划线(__)和特定于候补形状的结束符来命名。例如,Parts_Tags_ShowTags形状可以有Parts_Tags_ShowTags__BlogPost和Parts_Tags_ShowTags__Page名字的候补。候补名称中双下划线后的部分反映使用的形状,如当前的内容类型。(关于怎么命名形状的更多信息,参见访问和呈现形状)
映射模板文件到候补
要创建一个可以映射到相应形状的模板文件,你必须按下列命名规范命名模板:
• 形状名称中的下划线(_)在模板名称中转换为点(.)或反斜杠()。反斜杠表示模板在子文件夹。
• 形状名称中的双下划线(_)转换为连字符(-)。
• 形状名称中任何显示类型的值,在模板名称的结尾点(.)后面加上类型名称,如Content-BlogPost.Summary。
所有候补模板必须在Views文件夹下。Views文件夹可以位于主题或模块中。下表显示不同类型对应的Views下的子文件夹。
Shape type Template Folder
Content item Views\Items
Parts Views\Parts
Fields Views\Fields
EditorTemplate Views\EditorTemplates[template type folder] (例如Part的编辑模板位于Views\EditorTemplates\Parts.)
All other Views
例如,为了创建Tags Part候补模板,你可以在MyTheme\Vies\Parts文件夹下添加一个模板文件。然而,因为下划线可以转换为点(.)或反斜杠(),你也可以在Views文件加下创建一个模板文件,在名字前添加Parts.的前缀。Views\Parts\Tags.ShowTags-BlogPost.cshtml 或者 Views\Parts.Tags.ShowTags-BlogPost.cshtml 模板文件将映射到名字为 Parts_Tags_ShowTags__BlogPost的形状。
如果Orchard框架无法找到具有期望名称的候补模板,默认模板将用于这些形状。例如,如果你没有为显示标签创建候补,将使用标签的默认模板(位于Views\Parts\Tags.ShowTags.cshtml)。
Orchard框架自动创建了许多候补,你可以在你的系统中使用。尽管如此,你也可以为这些候补形状创建模板。创建候补的模式如下所示,在括号中匹配模板的实例。
对于Content形状:
• Content__[DisplayType]. (示例模板: Content.Summary)
• Content__[ContentType]. (示例模板: Content-BlogPost)
• Content__[Id]. (示例模板: Content-42)
• Content[DisplayType]_[ContentType]. (示例模板: Content-BlogPost.Summary)
• Content[DisplayType]_[Id]. (示例模板: Content-42.Summary)
对于Zone形状:
• Zone__[ZoneName]. (示例模板: Zone-SideBar)
对于Navigation形状:
• MenuItemLink__[MenuName]. (示例模板: MenuItemLink-main-menu)
• MenuItemLink__[ContentType]. (示例模板:MenuItemLink-ContentMenuItem,MenuItemLink-HtmlMenuItem, MenuItemLink-Blog)
对于menu 和 menu item 形状:
• Menu__[MenuName]. (示例模板: Menu-main)
• MenuItem__[MenuName]. (示例模板: MenuItem-main)
对于local menu 和 local menu item 形状:
• LocalMenu__[MenuName]. (示例模板: LocalMenu-main)
• LocalMenuItem__[MenuName]. (示例模板: LocalMenuItem-main)
对于 styles 和 resources:
• Style__[FileName]
• Resource__[FileName]
对于 widget 形状:
• Widget__[ZoneName]. (示例模板: Widget-SideBar)
• Widget__[ContentType]. (示例模板: Widget-BlogArchive)
对于 fields:
• [ShapeType__FieldName]. (示例模板: Fields\Common.Text-Teaser)
• [ShapeType__PartName]. (示例模板: Fields\Common.Text-TeaserPart)
• [ShapeType][ContentType][PartName]. (示例模板: Fields\Common.Text-Blog-TeaserPart)
• [ShapeType][PartName][FieldName]. (示例模板: Fields\Common.Text-TeaserPart-Teaser)
• [ShapeType][ContentType][FieldName]. (示例模板: Fields\Common.Text-Blog-Teaser)
• [ShapeType][ContentType][PartName]__[FieldName]. (示例模板:Fields\Common.Text-Blog-TeaserPart-Teaser)
对于 content parts:
• [ShapeType]__[Id]. (示例模板: Parts\Common.Metadata-42)
• [ShapeType]__[ContentType]. (示例模板: Parts\Common.Metadata-BlogPost)
你可以使用Shape Tracing 模块通过Shape Tracing界面创建候补模板. 更多信息,参见Customizing Orchard using Designer Helper Tools.
URL和部件候补
URL Alternates模块允许你为特定网页创建候补, Widget Alternates允许为确定的部件在特定区域附加候补。为了使用这些功能,必须启用URL Alternates和Widget Alternates模块。启用之后,基于网页和区域的候补形状将被创建。这些网页候补被结合到上面定义的候补模式。
例如,网址/my-blog/post-1对MenuItem对象有下列可用候补:
MenuItem-main
MenuItem-main-url-my-blog
MenuItem-main-url-my-blog-post-1
对于主页,下列候补可用:
MenuItem-main-url-homepage
使用本模块,你可以为布局形状添加特定网页的候补,比如Layout-url-homepage。为你的网站主页添加了一个特定布局。
在Themes/ThemeName/Views文件夹下创建Layout-url-About.cshtml,当访问/About页面时将会被使用。
注: 如果变化很小,也许对区域使用网址候补命名更为合适。
你可以通过下载Orchard库中的Designer Tools模块来启用URL Alternates: Orchard Designer Tools
同样widget alternates添加可以用来改变内容部分的渲染的模板名称,他们渲染特定类型的部件或特定区域的一部分。Shape Tracing (Orchard Designer Tools模块的另一个功能)是一个发现页面上哪个形状候补模板可用的好方法。
这是部件模板候补命名的例子:
Parts.Common.Body-HtmlWidget-TripelSecond
Parts.Common.Body-TripelSecond
明确指定候补模板
除了使用自动生成的候补,你可以手动指定一个候补。在placement.info文件中,你可以指定对于一个内容类型哪个候补可用。例如,为了对博客标签渲染指定一个不同的模板(定义为Parts_Tags_ShowTags_BlogPost),你可以修改Orchard.Tags模块的placement.info文件,包含一个匹配BlogPost类型的对象。下面的例子显示修改后的文件。
<Placement>
<Place Parts_Tags_Edit="Content:7"/>
<Match ContentType="BlogPost">
<Place Parts_Tags_ShowTags="Header:after.7;Alternate=ShowTags_BlogPost"/>
</Match>
<Match DisplayType="Detail">
<Place Parts_Tags_ShowTags="Header:after.7"/>
</Match>
<Match DisplayType="Summary">
<Place Parts_Tags_ShowTags="Header:after.7"/>
</Match>
</Placement>

匹配元素的顺序非常重要,只有第一个匹配元素用来渲染项目。在这个例子中,BlogPost下面的Detail和Summary不会被用到,因为更早的元素匹配了项目。 更多信息关于placement.info,参见Understanding placement.info.
MVC视图候补
Orchard的一些模块使用常规MVC视图来渲染自定义控制的动作的结果。为了定制通过MVC控制产生的页面的外观,你需要在你的主题的Views文件夹中添加一个视图文件的版本。
例如,如果你想定制Orchard.Search模块的搜索结果页面,你需要在你的主题的下面文件夹中添加一个文件:
/Themes/{Your theme}/Views/Orchard.Search/Search/Index.cshtml
该文件将覆盖由Orchard.Search模块使用的默认视图。当决定MVC视图时,Orchard使用的视图引擎会使用如下的模式。
• ~/Themes/{Active theme}/Views/{Area}/{Controller}/{View}.cshtml
• ~/Themes/{Active theme}/Views/{Controller}/{View}.cshtml
• ~/Themes/{Active theme}/{Partial}.cshtml
• ~/Themes/{Active theme}/DisplayTemplates/{TemplateName}.cshtml
• ~/Themes/{Active theme}/EditorTemplates/{TemplateName}.cshtml
请注意,主题不支持通常在MVC中支持的任何其他规则。除非在上述列表中指定。
通过代码添加候补
除了上面介绍的方法,你可以通过代码添加候补。为了通过代码定义候补,创建一个实现了IShapeTableProvider接口的类。然后,为每一个需要形状候补的类型添加OnDisplaying的handler。你指定形状名称作为ShapeTableBuilder类中Describe方法的参数。在处理程序中,你添加当候补使用时需要的任何逻辑。下面的示例演示如何为只在首页的用户指定Content形状候补。然后演示如何为DisplayType是Summary的Parts_Tags_ShowTags形状指定候补。
using Orchard;
using Orchard.ContentManagement;
using Orchard.DisplayManagement.Descriptors;

namespace MyTheme.ShapeProviders
{
public class ExampleShapeProvider : IShapeTableProvider
{
private readonly IWorkContextAccessor _workContextAccessor;

    public ExampleShapeProvider(IWorkContextAccessor workContextAccessor)
    {
        _workContextAccessor = workContextAccessor;
    }

    public void Discover(ShapeTableBuilder builder)
    {
        builder.Describe("Content")
            .OnDisplaying(displaying =>
            {
                if (displaying.ShapeMetadata.DisplayType == "Detail")
                {
                    ContentItem contentItem = displaying.Shape.ContentItem;
                    if (_workContextAccessor.GetContext().CurrentSite.HomePage
                        .EndsWith(';' + contentItem.Id.ToString())) {

                        displaying.ShapeMetadata.Alternates
                            .Add("Content__HomePage");
                    }
                }
            });

        builder.Describe("Parts_Tags_ShowTags")
            .OnDisplaying(displaying =>
            {
                if (displaying.ShapeMetadata.DisplayType == "Summary")
                {
                    displaying.ShapeMetadata.Alternates
                        .Add("Tags_ShowTags_Summary");
                }
            });
    }
}

}

文档原文地址:http://docs.orchardproject.net/Documentation/Alternates

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。
### 内容概要 这份《计算机试卷1》包含多个部分,主要覆盖了计算机基础知识、操作系统应用、文字处理、电子表格、演示文稿制作、互联网应用以及计算机多媒体技术。试卷以单选题开始,涉及计算机历史、基本概念、硬件组成、软件系统、网络协议等。接着是操作应用部分,要求考生在给定的软件环境中完成一系列具体的计算机操作任务。 ### 适用人群 本试卷适用于计算机科学与技术、信息技术相关专业的学生,以及准备计算机水平考试或职业资格认证的人士。它适合那些希望检验和提升自己计算机操作能力的学习者,也适用于教育工作者作为教学评估工具。 ### 使用场景及目标 1. **学习评估**:作为教育机构的课程评估工具,帮助教师了解学生对计算机基础知识的掌握程度。 2. **自学检验**:供个人自学者检验自己的计算机操作技能和理论知识,为进一步学习提供方向。 3. **职业发展**:为职场人士提供计算机技能的自我提升途径,增强其在信息时代的竞争力。 4. **考试准备**:为准备计算机相关考试的考生提供实战演练的机会,加强考试自信。 5. **教学资源**:教师可以将其作为教学资源,设计课程和实验,提高教学效果。 试卷的目标是通过理论知识的测试和实践技能的操作,全面提升考生的计算机应用能力。考生应掌握从基础的计算机组成原理到复杂的数据处理、演示文稿制作、网络应用以及多媒体技术处理等多方面技能。通过本试卷的学习与练习,考生将能够更加熟练地使用计算机解决实际问题,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值