您可以使用Document.AfterPublish事件在發佈後捕獲特定的文檔對象。我將使用此事件處理程序來檢查節點類型別名是否需要複製,然後可以調用Document.MakeNew並傳遞新位置的節點標識。 這意味着您不必使用特定的節點標識或文檔名稱來捕獲事件。
例子:
using umbraco.cms.businesslogic.web;
using umbraco.cms.businesslogic;
using umbraco.BusinessLogic;
namespace MyWebsite {
public class MyApp : ApplicationBase {
public MyApp()
: base() {
Document.AfterPublish += new Document.PublishEventHandler(Document_AfterPublish);
}
void Document_AfterPublish(Document sender, PublishEventArgs e) {
if (sender.ContentType.Alias == "DoctypeAliasOfDocumentYouWantToCopy") {
int parentId = 0; // Change to the ID of where you want to create this document as a child.
Document d = Document.MakeNew("Name of new document", DocumentType.GetByAlias(sender.ContentType.Alias), User.GetUser(1), parentId)
foreach (var prop in sender.GenericProperties) {
d.getProperty(prop.PropertyType.Alias).Value = sender.getProperty(prop.PropertyType.Alias).Value;
}
d.Save();
d.Publish(User.GetUser(1));
}
}
}
}
非常感謝你。我實際上已經使用Document.New對它進行了排序,因爲它沒有必要立即發佈。說,你的簡潔得多。 –
而且實際上會幫助另一部分,所以雙感謝隊友。 –