gpt4 book ai didi

c#-4.0 - 在 umbraco 中创建文件夹 - Umbraco 7

转载 作者:行者123 更新时间:2023-12-03 06:38:19 24 4
gpt4 key购买 nike

我在 umbraco 7.4.3 中有项目。我需要以编程方式为我在 umbraco 后台创建的每个特定对象创建媒体文件夹。

例如:我在后台创建酒店,然后转到此函数内的函数“Umbraco.Core.Services.ContentService.Saved”的重载,我试图在现有媒体下创建媒体文件夹(与我的新酒店名称相同)名为“hotels”的文件夹,用于放置酒店图像。

enter image description here

最佳答案

不要使任何服务功能重载。您应该创建一个从 ApplicationEventHandler 派生的类并重写 ApplicationStarted 方法。在那里,您可以附加到 ContentService.Saving (或 Saved)事件,然后使用 Services.Media.CreateMedia()< 直接创建媒体项。请参阅https://our.umbraco.org/documentation/Reference/Events/了解更多详情。

例如:

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");
}
}
}
}

注意:我还没有测试过这段代码;你可能需要调试它;您可以指定父文件夹。

关于c#-4.0 - 在 umbraco 中创建文件夹 - Umbraco 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37507231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com