【问题标题】:Sitecore add new Version for large number of itemsSitecore 为大量项目添加新版本
【发布时间】:2014-02-06 20:02:28
【问题描述】:

我有大量只有“en”语言版本的项目。 我必须为所有这些项目创建“de”版本。 (在内容编辑器中将语言切换为“de”并单击“添加新版本”,仅此而已,无需翻译)。这些项是共同父项的子项,它适用于该父根项的所有子项。

完成这项任务最实用的方法是什么?

这个问题有一个挑战。我只能使用管理员用户访问站点核心内容编辑器。我无法编写脚本并在系统上运行它。

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

    你会这样做:

    var master = Sitecore.Configuration.Factory.GetDatabase("master");
    
    // Get the root folder of the items you want to create versions for.
    var root = master.GetItem("path_or_GUID_to_root_item");
    
    // Switch to the language you want to create versions for.
    using (new LanguageSwitcher("de"))
    {
        // Loop through all descendants.
        foreach (Item descendant root.Axes.GetDescendants())
        {
            // Create new version using the current context language.
            var version = descendant.Versions.AddVersion();
    
            // Lines below are optional if you want to add field values to the version.
            version.Editing.BeginEdit();
            version.Fields["field_name_or_GUID"] = "value";
            version.Editing.EndEdit();
        }
    }
    

    请记住,如果您有很多项目,Axes.GetDescendants() 对性能不太友好。
    因此,如果您对此很认真,请使用 ContentSearch API 来检索项目。
    但至少您知道如何为特定语言添加新版本。

    【讨论】:

    • 问题是,我无法访问 Web 服务器。所以我不能部署任何东西。这就是为什么,我想研究仅在站点核心内容编辑器中可用的选项
    【解决方案2】:

    Sitecore Marketplace 中有一个名为ItemVersioner 的模块。使用此模块,您可以一键创建所有可用语言的项目版本。这有两个缺点:

    • 您必须单击每个项目并再次单击以添加版本。如果您的任务是一次性任务,那么它可能是一个解决方案。
    • 它为在/sitecore/system/Languages 下配置的所有语言创建版本。如果您有“en”和“de”以外的其他版本,如果您不想同时创建这些版本,则可能需要临时删除它们。

    如果这不是解决方案,我认为您必须创建一些自定义代码。我认为Ruud van Falier 的代码可以从这里开始。您需要在本地计算机上创建此代码,如果这对您有用,您可以使用此代码创建一个 Sitecore 包(查看SDN here 以获取有关如何创建包的信息)。然后你可以在你的系统上安装这个包并启动代码(你也可以创建一个新的功能区来执行代码来创建版本,查看this thread作为一个起点)。

    【讨论】:

    • 如果要创建多个语言版本,ItemVersioner 会很酷,但在这种情况下它对我没有帮助。手动单击每个项目并单击“添加新版本”也是同样的努力。丝带的想法对我来说听起来不错。我去看看,谢谢
    【解决方案3】:

    如果您确实没有要翻译的内容,并且只想在某个项目不存在时显示 de 的 en 版本,那么您应该考虑使用 Language Fallback Module,这正是该模块的设计目的.

    如果以后您需要添加项目的 de 版本,那么您可以在添加内容时根据具体情况执行此操作。

    【讨论】:

      【解决方案4】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多