如何使用自定义数据提供程序绑定DropLink?
更多信息: 我正在尝试使用Sitecore构建产品目录网站。 sitecore内容树中的每个产品都可以附加星级评分和短文本评论(将链接到使用个人资料提供者扩展的用户,但这是另一个问题)。
我打算将审核信息存储在外部数据库中,并使用自定义数据提供程序引用它。我已经从共享源(here)下载了NorthwindDataProvider,并对其进行了更改以使用包含评级,文本和uniqueidentifier字段的表来存储附加评论的sitecore中的产品ID。
模板字段是一个droplink,数据源设置为目录中的产品。
当我使用sitecore内容编辑器在自定义数据提供者中编辑评论时,即使我选择了一个已填充的产品并使用sitecore保存,droplink也会显示“Value not in selection list”。
它正在保存数据库中的ID,但是如果我查看原始值,它会显示没有大括号的id。工作droplink字段的原始值似乎包含括号。
要创建评论,我使用jquery帖子到webservice,使用外部datacontext写入数据库。我应该使用一些Sitecore API来改为使用自定义数据提供者吗?
使用自定义数据提供程序的任何信息都会有所帮助。我能够找到的文档都说明了可以做些什么,但我很难找到实际的实现。
答案 0 :(得分:1)
首先,你有一个模板字段,你正在使用droplink来存储所选项目的guid。我不清楚你是否将数据源指向Sitecore项目......但是如果你使用droplink,这是必不可少的。以下是我建议的最直接的方法:
创建一个模板,您可以添加字段来处理处理目录项的逻辑。你如何做到这一点是你的选择,而Sitecore并不关心,因为它只会处理这个项目而它所关心的只是找到一个项目......你编写业务逻辑来操纵外部数据。
一旦有了存储目录项的文件夹,就可以轻松编写一个脚本,由Sitecore中的Rules引擎或定期运行的Sitecore任务触发,以使您的目录项添加/更新或删除相应的列表Sitecore项目。
此外,另一个实现起来比较复杂的选项,但如果您的站点上有多个数据源,则是一种有效的方法,就是使用对象框架(如Entity框架)作为允许您的数据对象层使用任何数据源创建和填充公共对象。
希望这有用!