Sitecore为大量项目添加新版本
我有很多项目的版本只有“en”语言。 我必须为所有这些项目创建“de”版本。(在内容编辑器中将语言切换为“de”,然后单击“添加新版本”,仅此而已,无需翻译)。这些项是公共父项的子项,它适用于该父项根项的所有子项 完成这项任务最实际的方法是什么Sitecore为大量项目添加新版本,sitecore,sitecore6,Sitecore,Sitecore6,我有很多项目的版本只有“en”语言。 我必须为所有这些项目创建“de”版本。(在内容编辑器中将语言切换为“de”,然后单击“添加新版本”,仅此而已,无需翻译)。这些项是公共父项的子项,它适用于该父项根项的所有子项 完成这项任务最实际的方法是什么 在这个问题上有一个挑战。我只能通过管理员用户访问sitecore内容编辑器。我无法编写脚本并在系统上运行它。您可以这样做: var master = Sitecore.Configuration.Factory.GetDatabase("master")
在这个问题上有一个挑战。我只能通过管理员用户访问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
的模块。使用此模块,只需单击一下,即可创建所有可用语言的项目版本。这有两个缺点:
- 您必须单击每个项目,然后再次单击以添加版本。如果你的任务是一次性的,它可能是一个解决方案
- 它为在
下配置的所有语言创建版本。如果您有“en”和“de”以外的其他版本,如果您不想创建这些版本,则可能需要临时删除它们/sitecore/system/languages
如果这不是一个解决方案,我认为您必须创建一些自定义代码。我认为代码从开始就可以了。您需要在本地计算机上创建此代码,如果这对您有效,您可以使用此代码创建Sitecore包(请查看以获取有关如何创建包的信息)。然后你可以在你的系统上安装这个包并启动代码(你也可以创建一个新的色带,它执行代码来创建版本,检查一个起始点)。 如果你真的没有要翻译的内容,你只想在不存在的时候显示一个DE的EN版本,那么你应该考虑使用它,这正是模块设计的目的
如果以后需要添加项目的de版本,则可以在添加内容时根据具体情况进行添加。请使用下面的URL解决此问题-
问题是,我无法访问web服务器。所以我不能部署任何东西。这就是为什么,我想研究仅在sitecore内容编辑器中可用的选项。如果要创建多个语言版本,ItemVersioner会很酷,但在这种情况下对我没有帮助。手动单击每个项目并单击“添加新版本”也是同样的工作。带丝带的主意听起来不错。我会看看的,thanx