在哪里可以存储Sitecore中字段的自定义字段属性?

在哪里可以存储Sitecore中字段的自定义字段属性?,sitecore,Sitecore,我希望能够找到一个地方来存储Sitecore中字段的自定义属性。例如,假设我有一个名为ProductData的数据模板。它有三个领域: 标题(单行文本) 强度PPM(数量) 绝对强度(数量) 这两个数字字段还具有与之关联的度量单位。第一种是ppm,第二种是mg。最终,这些数据将需要显示在页面上。当数据显示在页面上时,我希望它显示如下: My Product Title Strength In ppm: 27 ppm Absolute Strength: 1350 mg 但我想找到一种方法,

我希望能够找到一个地方来存储Sitecore中字段的自定义属性。例如,假设我有一个名为ProductData的数据模板。它有三个领域:

  • 标题(单行文本)
  • 强度PPM(数量)
  • 绝对强度(数量)
这两个数字字段还具有与之关联的度量单位。第一种是ppm,第二种是mg。最终,这些数据将需要显示在页面上。当数据显示在页面上时,我希望它显示如下:

My Product Title
Strength In ppm: 27 ppm
Absolute Strength: 1350 mg
但我想找到一种方法,可以将字段的标签和字段的度量单位以某种方式存储在字段定义本身的Sitecore中。我认为标签可以存储在字段的Title属性中-对吗?是否有任何地方可以在字段定义中存储度量单位文本?我找不到任何类型的字段可以用于字段定义附带的自定义数据

我问这个问题的原因是,实际上,对于我正在处理的项目,数据模板可能会有100多个字段。这些都是化学数据。我希望能够编写一个例程,可以遍历所有字段,获取标签、值和度量单位,并在页面上显示所有内容

当然,实现这一点的另一种方法是将标签和度量单位信息放在外部数据库表或配置文件或其他文件中。但我更愿意把一切都放在Sitecore中


有没有办法做到这一点?

一种方法可能是创建一个自定义字段类型来表示“数字和单位”数据?(我已经用谷歌快速搜索过了,我认为这样的东西还不存在——但我可能错了)一个自定义字段可以让你在项目上有一个单独的字段来表示每一对数据

字段控件可以提供一个文本输入控件来捕获数字,然后是单位的表示。根据什么更适合您的解决方案,它可以:

  • 以下拉列表形式显示单位选项的选择,其中的一组选项取自字段模板定义的源值
  • 不提供选择,但从字段的源配置中获取一个特定的单元,然后在数字后显示
我建议将单位本身定义为数据模板类型,并使用系统需要的任何额外数据为“百万分之几”(Parts Per Million)(etc)创建项

字段控件可以在基础数据中存储单位和值。这将允许您迭代字段,并按照您提到的顺序依次处理每个字段。为此选择的格式由您自己决定,但通常使用XML或其他结构化文本方法。也许是这样的:

<data value="0.83" units="{d44109f3-659b-43d7-b761-a793c4e2f733}"/>

“值”属性存储输入的数字,“单位”属性包含定义相应单位数据的项目的项目ID

与Sitecore内核一样,您可以使用助手方法或类,在代码中处理这些数据时将其解包,以帮助在发布的网站UI中呈现这些数据


关于如何为自定义字段创建代码,Internet上有很多资源。我建议您将产品数据拆分为一个主模板(包含产品标题)和一个名为ProductProperty的辅助模板(包含PropertyName、PropertyValue、PropertyUnits等)。然后按如下方式组织内容项目:

* Product X (uses ProductData template)
  * Property 1 (uses ProductProperty template)
  * Property 2
  * ...
这可能看起来很麻烦,但好处是您的内容更易于管理,然后您可以通过在子项(ProductProperty项)上循环来更轻松地呈现这些数据。您可以使用标准的
@Html.Sitecore().Field()
方法来完成所有这些操作,这些方法将确保页面编辑器的兼容性


如果您的产品经常具有相同的属性集,您可以创建一个分支模板来定义这组ProductProperty项,这意味着您不必在每次添加新产品时都去创建这100个项。

不确定如何使用数据,或者如果它需要一些巧妙的搜索,但是为了简化模板,你可以考虑<代码>名称值列表字段类型。这将允许您添加无限数量的属性,而无需预先为每个模板定义它们

这里唯一需要注意的是,字段的名称部分只能包含字母和数字,因此不能包含空格。您可以在渲染时用空格替换下划线之类的内容,也可以自己创建自定义控件

如果要创建自定义控件,还可以查看
名称查找值列表
——您可以扩展其中一个以满足您的需要,或者从中获得灵感。您可以创建具有三个字段的控件:可选名称查找、手动值输入、可选强度单位


无论如何,这应该比在模板中创建100个字段要整洁得多,尤其是如果所有字段不适用于所有产品。

我认为数值、单位和标签都是内容。如果它们是内容,那么普通内容作者应该可以轻松编写它们,所以不要在系统中隐藏这些标签和单位。在我看来,我只是想让整条线成为这个领域的一部分,我不知道你为什么不这样做,例如

  • 标题(SLT)
  • 强度(SLT)
  • 绝对强度(SLT)
您甚至可以设置后两个字段的标准值,如下所示:

  • 强度单位:ppm值
  • 绝对强度:mg值
如果这是不可接受的,因为内容作者可以