2012-08-03 75 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