2012-08-03 102 views
5

模式出版的附加TCM ID发布的 - 静态形象越来越与图像名称

我想发布的图像,但问题是,每当我发布这些图片,他们的中医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); 
    } 
} 

我要发布的图像,而不中医URI追加到它。 Plz建议如何做。

回答

5

最简单的总是最好的。

在你TBB,只是把个人图像软件包:

package.PushItem(package.CreateMultimediaItem(component.Id)); 

然后使用“PublishBinariesInPackage” TBB这些图片发布到您的演示文稿服务器。

7

克里斯·萨默斯写了一篇关于这个题目http://www.urbancherry.net/blogengine/post/2010/02/09/Unique-binary-filenames-for-SDL-Tridion-Multimedia-Components.aspx

它基本上是一个很简单的事情来解决一个非常漂亮的文章,但可以有,你应该知道的巨大后果!

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

+1

谢谢巴特,上面的博客真的翔实..! – user1573378 2012-08-23 06:20:47

3

您可以使用这一目标的方法RenderedItem.AddBinary。该方法的某些重载版本允许将图像发布为流,并传递任何文件名。例如:

public Binary AddBinary(
    Stream content, 
    string filename, 
    string variantId, 
    string mimeType 
) 
+2

如果你要使用这种方法,它可能是值得考虑创建自己的“从包发布二进制信息”版本(也可以叫做:发布从包二进制变体“)。这样,你仍然保持分裂的”添加二进制打包“和”发布软件包中的二进制文件“,这是默认TBB使用的。 – 2012-08-03 12:48:38