2012-08-03 16 views
5

प्रकाशन की विधि भी संलग्न प्रकाशित कर रहे हैं हो रही -छवियाँ टीसीएम आईडी छवि नाम

मैं छवियों को प्रकाशित करने की कोशिश कर रहा हूँ स्थिर है, लेकिन मुद्दा यह है जब भी मैं उन छवियों को प्रकाशित करते हैं, उनके टीसीएम यूआरआई उनके नाम के साथ जोड़ दिया गया है (यानी अगर छवि का नाम example है और इसकी टीसीएम यूआरआई 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); 
    } 
} 

मैं टीसीएम यूआरआई इसके परिशिष्ट में बिना छवियों प्रकाशित करना चाहते हैं:

मैं निम्नलिखित कोड लिखा है। 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

यह मूल रूप से ठीक करने के लिए एक बहुत ही सरल बात है पर एक बहुत अच्छा लेख लिखा था, लेकिन बहुत बड़ा परिणाम है जो आप के बारे में पता होना चाहिए कर सकते हैं!

आप केवल एक ही स्थान पर एक निश्चित फ़ाइल-नाम के साथ एक बाइनरी प्रकाशित कर सकते हैं (और बाइनरी केवल प्रस्तुति सर्वर पर एक ही स्थान पर प्रकाशित किया जा सकता है, जब तक कि आप इसे एक संस्करण के रूप में प्रकाशित न करें)। हालांकि, सीएमएस में विभिन्न फ़ोल्डरों में एक ही द्विआधारी फ़ाइल-नाम के साथ मल्टीमीडिया घटक बनाना बहुत आसान है, जो कि यदि वे एक ही स्थान पर प्रकाशित होते हैं तो वे संघर्ष में होंगे। यही कारण है कि डिफ़ॉल्ट रूप से एसडीएल ट्रिडियन टीसीएम यूआरआई को फ़ाइल नाम में अद्वितीय बनाने के लिए जोड़ता है।

+1

धन्यवाद बार्ट, ब्लॉग के ऊपर वास्तव में जानकारीपूर्ण था ..! – user1573378

3

आप इस लक्ष्य के लिए RenderedItem.AddBinary विधि का उपयोग कर सकते हैं। विधि के कुछ अधिभारित संस्करणों को एक छवि को स्ट्रीम के रूप में प्रकाशित करने और किसी भी फ़ाइल नाम को पास करने की अनुमति देता है। उदाहरण के लिए:

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

यदि आप इस विधि का उपयोग करने जा रहे हैं, तो "पैकेज से बाइनरी आइटम प्रकाशित करें" (जिसे शायद: पैकेज से बाइनरी वेरिएंट प्रकाशित करें ") का अपना संस्करण बनाने पर विचार करना उचित हो सकता है। इस तरह आप अभी भी विभाजन को" बाइनरी जोड़ें " पैकेज करने के लिए "और" पैकेज से बाइनरी प्रकाशित करें ", जो डिफ़ॉल्ट टीबीबी का उपयोग करते हैं। –

संबंधित मुद्दे