新闻详情

新闻详情

首页 / 资讯中心 / 详情

Orchard Core Content Parts 完整指南:为内容类型装配可复用功能模块

发布时间:2026/9/28 2:26:05来源:尧图网络
Orchard Core Content Parts 完整指南:为内容类型装配可复用功能模块
CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载Content Parts内容部件是 Orchard Core 内容类型系统的核心组合单元——每个 Part 为内容项ContentItem贡献一组可复用的字段、行为与编辑界面从标题、别名、固定链接到表单、SEO 元数据均可通过给内容类型添加部件的方式即插即用。本篇以官方 Content Parts 参考文档为主线结合仓库源码逐项拆解 18 种内置部件的用途、配置方式与底层实现读完你将掌握在管理后台或 Recipe 中为内容类型装配部件、用 Liquid 模式生成标题与路由、以及通过 Placement 定制前端展示的完整实战能力。什么是 Content Part在 Orchard Core 中内容类型Content Type由若干 Part 组合而成Part 是对内容行为的模块化封装。从源码结构看所有部件都继承自ContentPart基类如 TitlePart 中public class TitlePart : ContentPart并通过三块核心代码协作完成工作Model定义部件承载的数据例如 TitlePartSettings 保存标题生成模式等设置DisplayDriver负责在内容编辑器Edit形状与前端Detail/Summary形状之间读写数据见 TitlePartDisplayDriver.csHandler在内容项的创建、更新、发布等生命周期事件中执行逻辑见 TitlePartHandler.cs。如何给内容类型添加 Part在管理后台Admin UI中进入Content → Content Definition → Content Types编辑目标内容类型点击Add Parts即可从部件列表中挑选并附加也可以为已附加的部件编辑设置。若需通过 Recipe 编程方式定义可使用ContentDefinition步骤完整示例见下文用 Recipe 定义部件一节。可用部件速查表以下表格完整收录官方参考文档 Content Parts 中列出的内置部件名称描述详细文档TitlePart允许你添加一个标题TitleAutoroutePart允许你添加固定链接permalinkAutorouteCommonPart允许编辑内容的创建日期与所有者ContentsAliasPart允许你添加一个别名AliasHtmlBodyPart允许你添加 HTML 正文HtmlMarkdownPart允许你添加 Markdown 正文MarkdownLiquidPart允许你添加 Liquid 输入LiquidLocalizationPart允许你创建当前内容的本地化版本LocalizeListPart允许你添加一个列表ListsFlowPart允许你添加 Widget部件FlowBagPart允许你添加内嵌的内容项BagPartWidgetsListPart允许你在不同区域zones中添加 Widget—FormPart允许你添加一个表单FormsPreview允许你添加一个预览按钮ContentPreviewPublishLater允许你设置日期以稍后发布PublishLaterReCaptcha允许你添加一个 ReCaptchaReCaptchaSeoMeta允许你配置 SEO 元标签SeoAuditTrail允许你添加描述内容项变更的备注并记录到审计日志AuditTrail上述部件分布在多个功能模块中启用对应模块的 Feature位于Configuration → Features后即可在内容类型编辑器中看到它们。按职责分组理解部件内容标识类标题、别名与固定链接TitlePartOrchardCore.Title模块让你自定义内容项的DisplayText属性——该属性贯穿整个管理后台用于帮助识别内容项。除手动编辑外还可以用 Liquid 表达式生成标题模式Pattern模式在内容项更新时执行且能访问当前ContentItem。例如为带名为Name的 Text 字段的Product内容类型生成标题{{ ContentItem.Content.Product.Name.Text }}AliasPartOrchardCore.Alias模块给内容项一个稳定的逻辑标识符如main-menu、footer-widget。别名不是 URL——需要路由时请使用AutoroutePart。别名便于代码、模板、Recipe 与部署计划在不依赖环境特定内容项 ID 的情况下查找内容。其默认生成模式为{{ Model.ContentItem.DisplayText | slugify }}注意模式仅在别名当前为空时才被求值修改显示文本或模式不会替换已有别名。别名需在租户内全局唯一超过 735 个字符会被截断且查找不区分大小写索引统一小写存储。通过alias:main-menu这样的句柄handle可在 LiquidContent[alias:main-menu]、RazorOrchard.GetContentItemByAliasAsync(main-menu)以及 C#注入IContentHandleManager后调用GetContentItemIdAsync(alias:main-menu)中解析内容。AutoroutePartOrchardCore.Autoroute模块为内容项指定自定义 URL。在其设置中配置 Liquid 模式即可生成 slug例如结合 TitlePart{{ ContentItem | display_text | slugify }}若内容项位于容器内例如BlogPost嵌套在带ListPart的Blog中可结合容器与标题生成路径{{ ContentItem | container | display_text | slugify }}/{{ ContentItem | display_text | slugify }}勾选Allow custom path可在编辑内容项时手动输入路径勾选Show homepage options可将内容项设为首页。启用 Autoroute 后可通过slug:URL句柄如slug:my-blog/my-blog-post在任意支持句柄的位置检索内容Liquid 中写作{% assign my_content Content[slug:my-blog/my-blog-post] %}或使用便捷访问器{% assign my_content Content.Slug[my-blog/my-blog-post] %}AutoroutePart还支持容器路由为父内容类型添加AutoroutePart、启用Allow contained item routing设置并在容器内容项上开启Route Contained Items即可为BagPart内嵌项与Taxonomy的Term生成路由默认路径由容器段 内容项 ID DisplayText 组成为子内容类型也附加AutoroutePart后可用 Liquid 模式生成友好 slug。相关设置还包括Allow Absolute Path允许绝对路径、Allow Disabled允许编辑者关闭路由生成以及Manage Contained Item Routes对子内容类型单独管理路由。内容主体类HTML、Markdown 与 LiquidHtmlBodyPartHtml 模块提供富 HTML 正文编辑器适合文章、页面等富文本内容MarkdownPartMarkdown 模块提供 Markdown 编辑体验前台渲染时转换为 HTMLLiquidPartLiquid 模块则允许编辑者输入 Liquid 模板片段常用于需要动态输出的区域。三者均可在部件设置中配置编辑器外观如 WYSIWYG 或源码模式与默认提示文本。结构组织类列表、流式布局与内嵌内容ListPartLists 模块将内容项组织为有序列表常用于博客 → 博文这类一对多的父子结构FlowPartFlows 模块允许在内容项内部自由添加多种类型的 WidgetBagPart与 FlowPart 设计相似但可以在设置中精确指定允许内嵌的内容类型且可作为NamedPart附加一个容器可有多个命名 BagPart例如 TheAgencyTheme 主题中的 Services、Portfolio、About、Team 四个 BagPart。BagPart 的全部内嵌内容项作为单一 JSON 文档存入数据库这是其强大之处。BagPart 支持Blocks 编辑器在部件设置中将 Editor 选项设为Blocks使用基于模态框的内容类型选择器替代默认下拉菜单并支持自定义Add Button Text与Modal Title Text。WidgetsListPart则允许在不同 Zone 中放置 Widget常用于主题布局中的边栏、页脚等区域。交互与扩展类表单、预览与元数据FormPartForms 模块将内容项构建为可提交表单配合字段部件可做自定义表单方案PreviewContentPreview 模块为内容编辑器增加预览按钮编辑时即可查看渲染效果PublishLaterPublishLater 模块设置未来发布日期到期自动发布ReCaptchaReCaptcha 模块为表单类内容添加人机验证SeoMetaSeo 模块配置标题、描述、社交分享标签等 SEO 元数据AuditTrailAuditTrail 模块记录内容项的变更说明与审计历史。实战一用 Liquid Pattern 配置 TitlePart在内容类型定义中编辑TitlePart的设置将Pattern填入 Liquid 表达式即可让标题自动生成。模式在内容项更新时执行可使用字段参与生成。对应源码中TitlePartHandler.cs 在UpdatedAsync事件中检查DisplayText是否为空若为空则将TitlePart.Title写入ContentItem.DisplayTextpart.ContentItem.DisplayText part.TitleTitlePartDisplayDriver.cs 则在编辑与展示形状中读写model.Title titlePart.ContentItem.DisplayText并在保存时回写model.ContentItem.DisplayText model.Title。这解释了标题为何在管理后台列表与前端展示中保持一致的DisplayText。实战二用 Placement 控制部件的前端展示与后台编辑器Orchard Core 允许通过placement.json精确控制部件形状的位置。以TitlePart为例其前端展示形状为TitlePartDisplay Type 分别为Detail→ 默认位置Header:5、Summary→ 默认位置Header:10模型类型均为TitlePartViewModel。要隐藏前端标题{ TitlePart: [ { differentiator: TitlePart, place: - } ] }若要在管理后台隐藏或移动编辑器应针对包装形状ContentPart_Edit而非TitlePart_Edit包装形状的 differentiator 为{ContentType}-{PartName}。例如隐藏Article内容类型编辑器上的 TitlePart 行{ ContentPart_Edit: [ { differentiator: Article-TitlePart, place: - } ] }TitlePart_Edit只作用于内部编辑器形状需要隐藏或移动包含标签与说明的整行编辑器时请使用ContentPart_Edit。BagPart的 Placement 规则与此一致命名 BagPart 用部件名作为 differentiator如Services隐藏其编辑器则针对LandingPage-Services非命名 BagPart 为LandingPage-BagPart详见 BagPart.md。实战三用 Recipe 定义部件除后台操作外部件可完全通过 Recipe 的ContentDefinition步骤编程定义。以下示例将AliasPart附加到Article内容类型并设置 Liquid 模式与生成后禁用输入选项GeneratedDisabled同时指定其在编辑器中的位置{ steps: [ { name: ContentDefinition, ContentTypes: [ { Name: Article, DisplayName: Article, Settings: { ContentTypeSettings: { Creatable: true, Draftable: true, Versionable: true } }, ContentTypePartDefinitionRecords: [ { PartName: AliasPart, Name: AliasPart, Settings: { AliasPartSettings: { Pattern: {{ Model.ContentItem | display_text | slugify }}, Options: GeneratedDisabled }, ContentTypePartSettings: { Position: 0 } } } ] } ] } ] }若允许编辑者覆盖生成值将Options改为Editable。对应的AliasPartSettings选项还包括Alias is editable编辑者可输入别名留空且配置了模式时由系统生成与Alias is generated and input is disabled编辑器显示为禁用输入框别名为空时按模式生成。部件渲染与形状机制从前端角度看附加部件的形状渲染遵循统一规则Detail与Summary两种显示类型对应不同的模板与默认位置TitlePart的TitlePartViewModel提供Title字符串与TitlePart部件实例两个属性供模板使用。BagPart 等复合部件还支持标准 alternates 与命名 alternates——例如MyBag-BagPart.liquid内容类型 BagPart与MyBag-MyNamedBagPart.liquid内容类型 命名 BagPart。显示内嵌内容项时Liquid 使用shape_build_display与shape_render过滤器Razor 则注入IContentItemDisplayManager调用BuildDisplayAsync后经DisplayAsync渲染BagPart.md。延伸阅读ContentParts 官方参考Title 模块文档 与 TitlePart 源码Autoroute 模块文档Alias 模块文档Flow / BagPart 文档 与 BagPart.mdHtml、Markdown、Liquid、Lists、Forms、Seo、AuditTrail 等模块文档赞分享CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载相关推荐Orchard Core Content Preview 模块实战指南内容编辑器实时预览的完整实现与深度原理Orchard Core Content Preview 模块实战指南内容编辑器实时预览的完整实现与深度原理 导读 本文以 Orchard Core 官方文档CMS后端Web框架Orchard Core 模块参考指南内置模块全览与 CMS/Core 分类导航Orchard Core 模块参考指南内置模块全览与 CMS/Core 分类导航 导读 本文以 Modules Reference https://link.CMS后端Web框架Orchard Core Audit Trail 模块完整指南事件审计、内容恢复与自定义事件记录Orchard Core Audit Trail 模块完整指南事件审计、内容恢复与自定义事件记录 Audit Trail审计追踪是 Orchard CorCMS后端Web框架上一篇BepInEx vs UMMRuntimeUnityEditor不同加载器版本对比与选择指南下一篇FLAC元数据管理如何用metaflac完美编辑音频标签创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Windows 11 激活怎么办?MAS 免费激活的 3 条路线指南 2026/9/28 6:37:49

Windows 11 激活怎么办?MAS 免费激活的 3 条路线指南

Windows 11 激活怎么办?MAS 免费激活的 3 条路线指南 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting. 项目…

阅读更多 →
【数电进阶】自己搭一个加法计算器 2026/9/28 6:37:49

【数电进阶】自己搭一个加法计算器

算术逻辑单元半加器(只能完成一半功能的加法器,无法接收进位)运作逻辑是,A和B是看作二进制中的其中一位,比如点亮是1,没有点亮是0,但是可以看到我们只有两个输出信号“sum”“C”期中sum指的是相…

阅读更多 →
PHPWord 0.8.0 版本解析:模板引擎、表格行克隆与排版能力全面升级 2026/9/28 6:37:48

PHPWord 0.8.0 版本解析:模板引擎、表格行克隆与排版能力全面升级

后端 【免费下载链接】PHPWord A pure PHP library for reading and writing word processing documents 项目地址: https://gitcode.com/gh_mirrors/ph/PHPWord 点击查看 免费下载 PHPWord 是一个纯 PHP 实现的、用于读取和写入字处理文档的开源库。0.8.0 版本发布…

阅读更多 →
Claude Code 被点名后,程序员别再把 Agent 当插件装:TaoToken 统一 Key 的 config.toml 骨架 2026/9/28 6:37:42

Claude Code 被点名后,程序员别再把 Agent 当插件装:TaoToken 统一 Key 的 config.toml 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
fabio 部署指南:构建从互联网入口到前端服务的 HTTP(S) 与 TCP 负载均衡架构 2026/9/28 6:37:42

fabio 部署指南:构建从互联网入口到前端服务的 HTTP(S) 与 TCP 负载均衡架构

后端API网关微服务 【免费下载链接】fabio Consul Load-Balancing made simple 项目地址: https://gitcode.com/gh_mirrors/fa/fabio 点击查看 免费下载 fabio 的核心部署定位是将来自互联网的 HTTP(S) 与 TCP 请求分发到能够处理这些请求的前端(FE&…

阅读更多 →
第 10 章 工程化拓展 2026/9/28 6:37:42

第 10 章 工程化拓展

本章导读 你将学会:ESLint + Prettier 代码规范、多环境构建区分、Vite 打包优化——从"功能完成"到"可以交付" 前置要求:第 7、9 章 预计用时:半天 10.1 ESLint + Prettier 代码规范 【知识点讲解】 团队协作,每个人的缩进、引号、分号习惯都不同,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉