Sitecore为大量项目添加新版本

Sitecore为大量项目添加新版本,sitecore,sitecore6,Sitecore,Sitecore6,我有很多项目的版本只有“en”语言。 我必须为所有这些项目创建“de”版本。(在内容编辑器中将语言切换为“de”,然后单击“添加新版本”,仅此而已,无需翻译)。这些项是公共父项的子项,它适用于该父项根项的所有子项 完成这项任务最实际的方法是什么 在这个问题上有一个挑战。我只能通过管理员用户访问sitecore内容编辑器。我无法编写脚本并在系统上运行它。您可以这样做: var master = Sitecore.Configuration.Factory.GetDatabase("master")

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

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


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

您可以这样做:

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.getsubstands()
如果有很多项,那么它对性能不是很友好。
因此,如果您是认真的,请使用ContentSearchAPI检索项目。

但至少您了解了如何为特定语言添加新版本。

中有一个名为
ItemVersioner
的模块。使用此模块,只需单击一下,即可创建所有可用语言的项目版本。这有两个缺点:

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

如果这不是一个解决方案,我认为您必须创建一些自定义代码。我认为代码从开始就可以了。您需要在本地计算机上创建此代码,如果这对您有效,您可以使用此代码创建Sitecore包(请查看以获取有关如何创建包的信息)。然后你可以在你的系统上安装这个包并启动代码(你也可以创建一个新的色带,它执行代码来创建版本,检查一个起始点)。

如果你真的没有要翻译的内容,你只想在不存在的时候显示一个DE的EN版本,那么你应该考虑使用它,这正是模块设计的目的


如果以后需要添加项目的de版本,则可以在添加内容时根据具体情况进行添加。

请使用下面的URL解决此问题-


问题是,我无法访问web服务器。所以我不能部署任何东西。这就是为什么,我想研究仅在sitecore内容编辑器中可用的选项。如果要创建多个语言版本,ItemVersioner会很酷,但在这种情况下对我没有帮助。手动单击每个项目并单击“添加新版本”也是同样的工作。带丝带的主意听起来不错。我会看看的,thanx