Sitecore Custom Data Provider将语言版本翻倍? [英] Sitecore Custom Data Provider doubles language versions?

查看:5
本文介绍了Sitecore Custom Data Provider将语言版本翻倍?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以最近我一直在为Sitecore开发一个自定义数据提供程序,它非常简洁,工作得很好,直到我遇到了这个:

如您所见,我收到了两种语言的版本。即使我的DataProvider的GetItemVersions如下所示:

/// <summary>
/// Used to retrieve version and language information of given item.
/// </summary>
public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
{
    VersionUriList result = null;

    if (itemDefinition.ID == RootItem.RootId)
    {
        // Our root only has 1 version in 1 language.
        result = new VersionUriList { new VersionUri(LanguageManager.GetLanguage("en"), Version.First) };
    }
    else if (CanProcess(itemDefinition.ID))
    {
        // Snipped processing of own items
    }

    return result;
}

这意味着我不处理的任何项都会返回null。有没有人以前见过这种行为,并确切知道在哪里修复它?

推荐答案

更新2014年4月29日

与此同时,我找到了一个更好的方法来治愈这个问题。在数据提供程序的配置中,您可以确定哪些方法可用,如下所示:

<sitecore>
    <dataProviders>
        <CustomDataProvider type="MyLib.Data.CustomDataProvider, MyLib">
            <disable>*</disable>
            <enable>GetChildIDs</enable>
            <enable>GetParentID</enable>
            <enable>GetItemDefinition</enable>
            <enable>GetItemVersions</enable>
            <enable>GetItemFields</enable>
        </CustomDataProvider>
    </dataProviders>
</sitecore>

对于那些在遵循documentation指南时遇到与我相同的问题的人:

他们忘了提到,当您集成到现有的数据库(如主数据库)时,您需要覆盖以下方法:

/// <summary>
/// We don't store any languages.
/// </summary>
public override LanguageCollection GetLanguages(CallContext context)
{
    return null;
}
否则,您的数据提供程序会以某种方式聪明地返回语言,从而将它们有效地提供给Sitecore两倍,从而导致上面所示的问题。(这会破坏TDS)

这篇关于Sitecore Custom Data Provider将语言版本翻倍?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆