【问题标题】:Umbraco - Changing media typeUmbraco - 改变媒体类型
【发布时间】:2015-06-10 14:14:05
【问题描述】:

有没有办法在 Umbraco 中创建媒体类型后更改它,最好是通过 c# 代码?

由于引用的原因,通过创建具有新类型的新媒体节点并迁移该媒体类型下方的图像来进行迁移的问题越来越多。

有没有一种好方法可以将文件夹更改为自定义媒体类型?

我正在使用 Umbraco 7,并希望对 App_Code 文件夹中内容或媒体服务的 Saved 事件执行此迁移。

【问题讨论】:

    标签: c# umbraco umbraco7


    【解决方案1】:

    我不得不对文档模板做一些非常相似的事情。您有两个选择 - 您可以更改媒体类型,或者您可以创建具有正确类型的新媒体,复制属性并销毁旧媒体。应该有大量的代码示例可以做到这一点,但如果你遇到困难就大声喊叫

    您应该能够在 app_code 文件夹中添加一个事件处理程序以在保存时触发

    【讨论】:

    • 如果你修复它,记得发布你的代码来帮助别人:)
    • 所以我试过了,但是当我几乎完成实现它时(通常是实现它的时间),复制图像并将它们放在新的媒体类型文件夹中会弄乱对这些图像的任何引用(以及有大量的参考资料),这就是为什么我避免使用 GUI 来做这件事。你提到改变媒体类型......会不会有这样的工作?文件夹.ContentType.Alias = "newMediaTypeAlias" ?还是媒体类型的分配方式比仅使用别名更复杂?
    • 我建议尝试一下 - 我真的不知道,但如果你粘贴了你使用的 sn-p,我可以看看。我建议设置 MediaTypeID 或 MediaType 并保存 Media 对象可能是要走的路,而不是 Alias,但我不确定不尝试它是否会起作用
    【解决方案2】:

    我也有类似的需要更改与节点关联的 mediaType。内容树的上下文菜单中有该选项,但媒体树 GUI 中没有类似的选项。您是否找到了实现这一点并刷新所有与它们关联的缓存/xml 的好方法?

    如果您采用创建新媒体节点的路线来获得新类型,我确实有建议。您在评论中提到,复制图像以将它们作为子文件夹放置在新文件夹中,这会弄乱对图像的引用。 GUI 中有一个“移动节点”选项,它将为您的子图像保留相同的 nodeID,因此对它们的任何引用。以编程方式,我认为这将涉及更新图像节点的属性,并确保刷新trees.config。

    <ChildImage id="4099" parentID="4098" level="4" creatorID="2" sortOrder="0" createDate="2014-10-16T10:32:07" updateDate="2015-05-05T14:32:15" nodeName="Cutler - 101" urlName="my-image" path="-1,3285,3287,4098,4099" isDoc="" nodeType="2887" writerName="admin" writerID="2" version="03d9a03d-4cc5-4e27-b9ff-6651362e264b" template="0" nodeTypeAlias="ChildImage">
    

    我认为需要更改的属性是 parentID 和路径

    【讨论】:

    • trees.config 仅用于注册和编辑每个部分中的树及其属性 - 例如排序。您可能指的是 umbraco.config 文件,它是已发布内容的 xml 缓存 - 也不应该被编辑 - 您需要使用 Umbraco 服务 Api 编辑添加/更新媒体节点来操作媒体项目。
    • 感谢您的澄清/详细信息。 media service中绝对有'move'的API函数
    • 当然 - 但它不会帮助您更改 MediaType。为此,您需要直接编辑数据库记录,以便媒体项目指向新的 MediaType - 我可能会去看看更改 ContentType 的现有代码 - 这将为您提供这种类型的起点事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2022-08-16
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多