2012-06-13 15 views
9

के रूप में पैकेज में किसी आइटम को निष्पादित करना क्या किसी को पता है कि पैकेज में स्ट्रिंग आइटम का उपयोग करने के लिए एक कंपाउंड टेम्पलेट में यह संभव है या नहीं, जैसे कि एक dreamweaver टेम्पलेट था? और क्या आप अन्य मध्यस्थों (जैसे रेजर) के लिए एक ही विधि लागू करते हैं?एक ड्रीमवेवर टेम्पलेट

धन्यवाद मार्क

+0

पैकेज क्लास में एक विधि 'पैकेज है। मूल्यांकन करें एक्सप्रेशन (स्ट्रिंग एक्सप्रेशन)' जो जांच के लायक हो सकता है। –

उत्तर

5

मैं, डर है कि Package में बस किसी भी आइटम पर संभव नहीं होगा हूँ के बाद से Engine उम्मीद Tridion आइटम पर आधारित होने की Template रों।

यदि आपका टेम्पलेट आइटम एक ट्रिडियन आइटम के आधार पर है तो आप Engine.GetMediator विधि से शुरू करके शायद बहुत दूर हो सकते हैं। यदि ऐसा नहीं है, तो आपको इसे वैध Template ऑब्जेक्ट में बदलने के लिए कुछ रास्ता खोजना होगा।

Template template = ... 
IMediator mediator = engine.GetMediator(template); 
mediator.Transform(engine, template, package); 

मैं पैकेज में एक Tridion आधारित मद से एक Component वस्तु बनाने के लिए है, तो मैं सामान्य रूप से कुछ इस तरह करते हैं:

Component component = new Component(item.GetAsXmlDocument().DocumentElement, 
            engine.GetSession); 

मैंने कोशिश नहीं की है, लेकिन उम्मीद है कि आप Template के लिए ऐसा ही कर सकते हैं - यह देखते हुए कि आप टेम्पलेट का प्रतिनिधित्व करने वाले पैकेज से वैध आइटम से शुरू करते हैं। आप शायद मौजूदा आइटम से एक्सएमएल क्लोन कर सकते हैं या नकली करने के लिए कुछ और रास्ता ढूंढ सकते हैं।

यदि आप इसे काम पर लेते हैं, तो यह सभी पंजीकृत टेम्पलेट प्रकारों में काम करेगा। Engine ट्रिडियन के साथ आने वाले प्रकारों के लिए कोई विशेष उपचार नहीं प्रदान करता है।

+1

सूचक के लिए धन्यवाद फ्रैंक। उसमें देखेंगे। आपका –

+0

मुझे पता चला कि 'इंजन। गेटमेडिएटर' सार्वजनिक नहीं है, इसलिए आप इसे नहीं पहुंच सकते हैं। मैं बस अपने टीबीबी में 'ड्रीमवेवर मैडिएटर' को तुरंत समाप्त कर रहा था और अपने पूर्व-निर्मित 'टेम्पलेटबिल्डिंगब्लॉक' ऑब्जेक्ट में गुजर रहा था। यदि अधिक लोगों को यह उपयोगी लगता है तो मैं ऊपर दिए गए कोड को अपडेट करूंगा। –

5

मुझे संदेह है कि यह संभव नहीं है।

Package.EvaluateExpression उपयोगी हो सकता है, लेकिन यह केवल नहीं एम्बेडेड भाव (अर्थात दूरभाष)

Engine.GetMediator एक Template उम्मीद है और इसके लिए उचित Mediator रिटर्न के साथ कोड की बड़ी स्निपेट भाव पर काम करेंगे जैसा कि नाम से पता चलता है,। आपकी समस्या तब यह है कि IMediator इंटरफ़ेस केवल Transform विधि को परिभाषित करता है, जिसके लिए Engine, Template और Package की आवश्यकता होती है।

मैं इन चारों ओर किसी भी सुरुचिपूर्ण तरीके से नहीं सोच सकता। हो सकता है कि अपना खुद का मध्यस्थ लिखें, लेकिन वह अभी भी एक पैकेज की अपेक्षा करेगा, स्ट्रिंग नहीं, इसलिए आपको पहले स्ट्रिंग आधारित आइटम को किसी अन्य टीबीबी से स्टोर करना होगा।

मेरी सलाह: आपको लगता है जैसे आपको ड्राइंग बोर्ड पर वापस जाना होगा और अपनी समस्या का वैकल्पिक समाधान ढूंढना होगा।

+1

मैंने माना था कि मार्क मौजूदा आईटीम्प्लेट या मध्यस्थ के भीतर से "डीडब्ल्यूटी के रूप में स्ट्रिंग" का आह्वान करना चाहता था, क्योंकि वह पैकेज में एक आइटम होने का जिक्र कर रहा है। यदि ऐसा है, तो वह बस अपने मौजूदा इंजन और पैकेज ऑब्जेक्ट्स को मध्यस्थ को पास कर सकता है। ट्रांसफॉर्म विधि। मुख्य समस्या जो मैं देख सकता था वह उस स्ट्रिंग आइटम को टेम्पलेट इंस्टेंस में बदलना है।लेकिन यह एक अच्छा मुद्दा है, इसलिए मैं विस्तृत करने के लिए अपना उत्तर अपडेट करूंगा। –

+1

मुझे लगता है कि एक नया घटक टेम्पलेट या पेज टेम्पलेट ऑब्जेक्ट बनाना और टेम्पलेट के वैध XML प्रस्तुति में पास करना संभव है। फिर भी आपको कहीं भी नहीं मिलेगा - मुझे लगता है कि आपको अपनी स्ट्रिंग आइटम से एक नया टीबीबी बनाना होगा और जोड़ना होगा यह आपके नए टेम्पलेट के एक्सएमएल में है। मुझे उम्मीद है कि टीबीबी को बचाया जा रहा है। –

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