Orchardcms 一种用液体存取字段内容的方法
我正在使用orchard core的最新NuGet版本。因为我想使用Bulma作为CSS框架,所以我需要创建tepmlates。我遇到的几个问题之一是:如何从液体模板中访问字段内容 例如,Blog主题的内容类型为Article。在文章中有一个字段副标题。我创建了模板文章TextField作为Orchardcms 一种用液体存取字段内容的方法,orchardcms,Orchardcms,我正在使用orchard core的最新NuGet版本。因为我想使用Bulma作为CSS框架,所以我需要创建tepmlates。我遇到的几个问题之一是:如何从液体模板中访问字段内容 例如,Blog主题的内容类型为Article。在文章中有一个字段副标题。我创建了模板文章TextField作为 {{Model.Field.Text}问题是OrchardCore.ContentFields模块没有将TextField类型注册到Liquid的TemplateContext.GlobalMemberA
{{Model.Field.Text}
问题是OrchardCore.ContentFields模块没有将TextField
类型注册到Liquid的TemplateContext.GlobalMemberAccessStrategy
服务,这会阻止您访问TextField
对象上的任何成员
该模块的注册方式如下所示:
TemplateContext.GlobalMemberAccessStrategy.Register();
这不仅是不必要的,因为LiquidViewTemplate
已经自动注册了模型,它也没有多大帮助,因为您只能访问模型的字段
属性,而不能访问其文本
属性
例如,这将产生一些输出:
{{Model}}
这也将:
{{Model.Field}}
但正如您正确注意到的,这不会:
{{Model.Field.Text}
这显然是Orchard Core中的一个遗漏,特别是在ContentFields模块中
由于您使用的是NuGet软件包,因此显然无法将其破解到源代码中。但是您可以做的是将一个Startup
类添加到从StartupBase
派生的主题中,并添加以下静态构造函数:
static Startup()
{
TemplateContext.GlobalMemberAccessStrategy.Register<TextField>();
}
静态启动()
{
TemplateContext.GlobalMemberAccessStrategy.Register();
}
请确保引用OrchardCore.ContentFields NuGet包,并为要编译的主题导入OrchardCore.ContentFields.Fields
命名空间
之后,您将能够从Liquid模板访问文本
属性
最后,,我建议您在GitHub上提交一个关于此遗漏的问题,以便最终从主题的启动文件中删除我提到的代码。问题是OrchardCore.ContentFields模块没有将
TextField
类型注册到Liquid的TemplateContext.GlobalMemberAccessStrategy
服务,它阻止您访问TextField
对象上的任何成员
该模块的注册方式如下所示:
TemplateContext.GlobalMemberAccessStrategy.Register();
这不仅是不必要的,因为LiquidViewTemplate
已经自动注册了模型,它也没有多大帮助,因为您只能访问模型的字段
属性,而不能访问其文本
属性
例如,这将产生一些输出:
{{Model}}
这也将:
{{Model.Field}}
但正如您正确注意到的,这不会:
{{Model.Field.Text}
这显然是Orchard Core中的一个遗漏,特别是在ContentFields模块中
由于您使用的是NuGet软件包,因此显然无法将其破解到源代码中。但是您可以做的是将一个Startup
类添加到从StartupBase
派生的主题中,并添加以下静态构造函数:
static Startup()
{
TemplateContext.GlobalMemberAccessStrategy.Register<TextField>();
}
静态启动()
{
TemplateContext.GlobalMemberAccessStrategy.Register();
}
请确保引用OrchardCore.ContentFields NuGet包,并为要编译的主题导入OrchardCore.ContentFields.Fields
命名空间
之后,您将能够从Liquid模板访问文本
属性
最后,我建议您在GitHub上提交一个关于此遗漏的问题,以便最终从主题的启动文件中删除我提到的代码