nicht überlasten eine der Servicefunktionen. Sie sollten stattdessen eine von ApplicationEventHandler
abgeleitete Klasse erstellen und die ApplicationStarted
-Methode überschreiben. Dort können Sie an das Ereignis ContentService.Saving
(oder Saved
) anhängen und dann Ihr Medienelement direkt mit Services.Media.CreateMedia()
erstellen. Weitere Informationen finden Sie unter https://our.umbraco.org/documentation/Reference/Events/.
z.B .:
using Umbraco.Core;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
namespace MyProject.EventHandlers
{
public class RegisterEvents : ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
//Listen for when content is being saved
ContentService.Saving += ContentService_Saving;
}
/// <summary>
/// Listen for when content is being saved, check if it is a new
/// Hotel item and create new Media Folder.
/// </summary>
private void ContentService_Saving(IContentService sender, SaveEventArgs<IContent> e)
{
IMedia parentFolder; // You need to look this up.
foreach (var content in e.SavedEntities
//Check if the content item type has a specific alias
.Where(c => c.Alias.InvariantEquals("Hotel"))
//Check if it is a new item
.Where(c => c.IsNewEntity()))
{
Services.Media.CreateMedia(e.Name, parentFolder, "Folder");
}
}
}
}
Hinweis: ich diesen Code nicht getestet; Sie werden es wahrscheinlich debuggen müssen; und es liegt an Ihnen, den übergeordneten Ordner anzugeben.