图像随着TCM ID附加图像名称而发布

use*_*378 5 tridion tridion-2011

出版方式 - 静态

我正在尝试发布图像,但问题是每当我发布这些图像时,它们的TCM URI都附加到它们的名称上(即如果图像名称是example,它的TCM URI就像tcm:1-115,图像文件名变成了example_tcm1-115).

我写了以下代码:

public void Transform(Engine engine, Package package)
{
    Filter MMCompFilter = new Filter();
    MMCompFilter.Conditions["ItemType"] = Tridion.ContentManager.ItemType.Component;
    Folder folder = engine.GetObject("tcm:1-1-2") as Folder;

    foreach (Component MMcomp in folder.GetItems(MMCompFilter))
    {
        Binary binary = engine.PublishingContext.RenderedItem.AddBinary(MMcomp);
        String binaryurl = binary.Url;
        char[] array = binaryurl.ToCharArray();
        Array.Reverse(array);
        string obj = new string(array);
        string final = newImagepath(obj);
        char[] array2 = final.ToCharArray();
        Array.Reverse(array2);
        string obj2 = new string(array2);

        package.PushItem("Image", package.CreateHtmlItem(obj2));
    }

    public string newImagepath(string filePath)
    {
        int formatIndex =filePath.IndexOf(".");
        string format= filePath.Substring(0,formatIndex);
        int finalPath=filePath.IndexOf("_");
        string newPath=filePath.Substring((finalPath+1));
        return (format+"."+newPath);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想发布没有附加TCM URI的图像.Plz建议如何做到.

Bar*_*man 7

Chris Summers写了一篇关于这个主题的非常好的文章http://www.urbancherry.net/blogengine/post/2010/02/09/Unique-binary-filenames-for-SDL-Tridion-Multimedia-Components.aspx

这基本上是一个非常简单的修复方法,但是你应该注意到它会产生巨大的后果!

您只能在一个位置发布一个具有特定文件名的二进制文件(并且二进制文件只能发布到演示服务器上的单个位置,除非您将其作为变体发布).但是,在CMS中,很容易在不同的文件夹中创建具有相同二进制文件名的多媒体组件,如果它们发布到同一位置,则会发生冲突.这就是为什么默认情况下SDL Tridion将TCM URI附加到文件名以使其唯一.


Nun*_*res 5

最简单的总是最好的.

在TBB中,只需将各个图像推送到包中:

package.PushItem(package.CreateMultimediaItem(component.Id));
Run Code Online (Sandbox Code Playgroud)

然后使用"PublishBinariesInPackage"TBB将这些图像发布到演示服务器.