我希望能够在Sitecore中找到存储字段自定义属性的位置。例如,假设我有一个名为ProductData的数据模板。它有三个领域:
两个数字字段还具有与之关联的度量单位。第一个是ppm,第二个是mg。最终,这些数据需要显示在页面上。当数据显示在页面上时,我希望它显示如下:
My Product Title
Strength In ppm: 27 ppm
Absolute Strength: 1350 mg
但我想找到一种方法,字段的标签和字段的度量单位可以某种方式存储在Sitecore中的字段定义中。我认为标签可以存储在字段的Title属性中 - 对吧?有没有地方可以将测量单位文本存储在字段定义中?我找不到任何可用于自定义数据的字段,这些字段与字段定义一起使用。
我问这个的原因是,实际上我正在处理数据模板的项目可能会有更多像100个字段。这是所有化学数据。我希望能够编写一个例程,它可以遍历所有字段,获取标签,值和度量单位,并在页面上显示所有内容。
当然,我可以通过另一种方式将标签和度量单位信息放在外部数据库表或配置文件中。但我更愿意在Sitecore中拥有它。
我有什么想法可以做到这一点?
答案 0 :(得分:1)
我建议您将产品数据拆分为主模板(包含产品标题)和名为ProductProperty的辅助模板(包含PropertyName,PropertyValue,PropertyUnits等)。然后按如下方式组织您的内容项:
* Product X (uses ProductData template)
* Property 1 (uses ProductProperty template)
* Property 2
* ...
这可能看起来很麻烦,但好处是您的内容更易于管理,然后您可以通过循环遍历子项(ProductProperty项目)来更轻松地呈现此数据。您可以使用标准<sc:FieldRenderer />
或@Html.Sitecore().Field()
方法完成所有这些操作,这将确保页面编辑器的兼容性。
如果您的产品经常使用相同的属性集,则可以创建一个分支模板来定义这组ProductProperty项目,这意味着每次添加新产品时都不必创建这100个项目。< / p>
答案 1 :(得分:1)
不确定如何最终使用数据,或者如果搜索需要一些聪明,但为了简化模板,您可以考虑Name Value List
字段类型。这将允许您添加无限数量的属性,而无需预先为每个模板定义它们。
这里唯一需要注意的是,字段的Name部分只能包含字母和数字,所以没有空格。您可以在渲染时用空格替换下划线,或者自己创建自定义控件。
如果您要创建自定义控件,那么还要查看Name Lookup Value List
- 您可以扩展其中一个以满足您的需求,或从中获取灵感。您可以使用三个字段创建控件:可选名称查找,手动值输入,可选强度单位。
在任何情况下,它应该比在模板中创建100个字段更加整洁,特别是如果所有字段都不适用于所有产品。
答案 2 :(得分:0)
一种方法可能是创建自定义字段类型来表示“数字和单位”数据? (我有一个快速的谷歌,我不认为这样的东西已经存在 - 但我可能是错的)自定义字段可以让你在你的项目上有一个字段来代表这些数据对。
字段控件可以显示文本输入控件以捕获数字,然后显示单位。根据您的解决方案更合适的内容,它可以:
我建议将单位定义为数据模板类型,并使用系统所需的任何额外数据为“百万分量”(等)创建项目。
字段控件可以将单位和值存储在基础数据中。这将允许您迭代字段并按照您的提及依次处理每个字段。您为此选择的格式取决于您,但通常使用XML或其他一些结构化文本方法。也许是这样的事情:
<data value="0.83" units="{d44109f3-659b-43d7-b761-a793c4e2f733}"/>
value属性存储输入的数字,units属性包含定义适当单位数据的项目的项目ID。
与Sitecore内核一样,您可以使用辅助方法或类,在代码中处理数据时解压缩这些数据,以帮助在已发布网站的UI中呈现它。
互联网上有大量资源可用于如何为自定义字段创建代码。这个Google search lists a few of them可以帮助您入门。
答案 3 :(得分:0)
我认为数值,单位和标签都是内容。如果它们是内容,它们应该很容易被常规内容作者授予,所以不要在系统中隐藏这些标签和单元。 IMO,我只是让整条线成为该领域的一部分,我不确定为什么你不会,例如。
您甚至可以为后两个字段设置标准值,如下所示:
如果这是不可接受的,因为内容作者可以更改项目的单个实例上的标签而不是另一个实例,那么您可能需要考虑将标签和单位移动到dictionary entries。