2012-03-30 13 views
10

HTML टेम्पलेट मेरी घटक के लिए मैं घटक टेम्पलेट का टीसीएम यूआरआई को लिखने के लिए की जरूरत में:मैं अपने घटक डीडब्ल्यूटी के भीतर से घटक टेम्पलेट आईडी कैसे एक्सेस कर सकता हूं?

<!-- Start Component Presentation: {"ComponentID" : "@@[email protected]@", 
         "ComponentTemplateID" : "@@[email protected]@" } --> 

लेकिन दुर्भाग्य से ComponentTemplate.ID मौजूद नहीं है।

मैं अपने घटक डीडब्ल्यूटी के भीतर से घटक टेम्पलेट आईडी कैसे एक्सेस कर सकता हूं?

उत्तर

11

मुझे डर है कि आप एक सी # TBB (टुकड़ा या विधानसभा) लिखने के लिए होगा हूँ:

TcmUri templateId = engine.PublishingContext.ResolvedItem.Template.Id; 
if (templateId.ItemType == ItemType.ComponentTemplate) { 
    Item item = package.CreateStringItem(ContentType.Text, templateId.ToString()); 
    package.PushItem("ComponentTemplateID", item); 
} 

आप केवल एक पृष्ठ डीडब्ल्यूटी लेआउट के भीतर से ComponentTemplate.ID उपयोग कर सकते हैं ...

+0

बिल्कुल 'पहुंच' नहीं है, लेकिन यदि डीडब्ल्यूटी का उपयोग केवल एक निश्चित टेम्पलेट के साथ किया जाता है, तो क्या आप इसे हार्ड-कोड कर सकते हैं? मैं क्या कह रहा हूं, यह @ फ्रैंक है जिसके बारे में हम बात कर रहे हैं। –

+0

यह फ्रैंक हो सकता है, लेकिन वह इस मामले में एक बार के लिए कुछ हद तक यथार्थवादी वेबसाइट पर काम कर रहा है। तो दुर्भाग्य से हार्ड कोडिंग यह एक विकल्प नहीं है। समस्या को हल करने के लिए कोड का बहुत कुछ लिखना, हालांकि एक विकल्प है; इसलिए मैं अब तक मिहाई के सुझाव ले रहा हूं, लेकिन फिर इसे एक फ़ंक्शन स्रोत में डाल दिया हूं जिसे मैं अपने डीडब्ल्यूटी @@ GetComponentTemplate() @@ –

+1

से कॉल कर सकता हूं शायद कई कोड की आवश्यकता नहीं है। स्पष्ट रूप से @@ आईडी @@ पूर्वावलोकन और प्रकाशन में घटक टेम्पलेट आईडी लौटाता है, लेकिन टेम्पलेट बिल्डर नहीं। उदाहरण के लिए, '@@ Component.ID @@ @@ आईडी @@ 'मुझे' टीसीएम: 6-1541 टीसीएम: 6-1541' टेम्पलेट बिल्डर में देता है, लेकिन' टीसीएम: 6-1541 टीसीएम: 7-81-32' पूर्वावलोकन में –

1

कंपाउंड टेम्पलेट में टेम्पलेट आमंत्रण में "ComponentTemplateID" पैरामीटर जोड़ें। इसके बाद आप इसे पैकेज चर के रूप में उसी तरह एक्सेस कर सकते हैं।

+1

हालांकि एक दिलचस्प विकल्प, मुझे अभी भी उस पैरामीटर मान को मैन्युअल रूप से टाइप करना होगा। इस प्रकार प्रतिलिपि/चिपकाने, सीटी को पोर्टिंग या स्थानीयकरण जैसी क्रिया पैरामीटर मान को गलत प्रदान करेगी। –

+0

वास्तव में फ्रैंक। मैं अक्सर कोड के बजाय कॉन्फ़िगरेशन के साथ चीजों को करना पसंद करता हूं, लेकिन हो सकता है कि मैं थोड़ा दूर चला गया हूं। मुझे किसी ऐसे व्यक्ति को कोई फर्क नहीं पड़ता है जो इसे ठीक करने के लिए कॉपी/पेस्ट करता है, और मुझे कोई तकनीकी डिज़ाइन नहीं है जो सीटी को स्थानीयकृत करता है, लेकिन पोर्टिंग समस्या बहुत ही खराब है। तब मिहाई के समाधान के लिए +1। –

1

@@[email protected]@ पूर्वावलोकन (सीएमई में, टेम्पलेट बिल्डर में नहीं) या प्रकाशन के दौरान घटक टेम्पलेट टीसीएम यूआरआई देगा।

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