1

我们正在管理一个拥有超过 2000 个节点的 umbraco 站点。我们最近在我们的一种主文档类型中添加了一个新属性,因为它是一个新属性,现有节点没有属性值。我们必须更新值在部署新更改之前,在每个节点中删除该属性。手动更新值非常困难,因为它需要很多时间。我们计划使用一次性升级 aspx 页面或用户控件来完成这项工作。有没有人遇到过这种情况?如何制作一次性升级页面?任何帮助,将不胜感激 。

4

2 回答 2

0

我相当确定这不在核心中,并且没有为此目的创建一个包。但是创建一个包含 razor (cshtml) 脚本的宏非常简单,该脚本会更新特定节点的所有后代的单个属性:

类似的东西(仅来自 2 级课程的记忆):

var nodes = @Model.DescendantsOrSelf(-1); //-1 is the root node
foreach (var node in nodes)
{
  Document doc = new Document(node.Id);
  doc.getProperty("yourProperty").Value = "xxx"; // the getProperty looks wrong, I know
  doc.Publish(new User(0));  //User 0 is the admin user
  umbraco.library.UpdateDocumentCache(doc.Id);
}

这个很棒的包http://our.umbraco.org/projects/developer-tools/content-maintenance-dashboard-package进行了大规模更新,但上次我检查它并没有更新单个字段 - 但它现在可能会更新。

于 2013-03-23T00:01:24.507 回答
0

如果您转到以下网址,我会认为重新发布 xml 缓存应该这样做:

/umbraco/dialogs/republish.aspx?xml=true

于 2013-03-23T06:41:45.650 回答