अवलोकन और उद्देश्य
बॉक्स से बाहर, काई’ सामग्री क्वेरी वेब भाग (CQWP) इसका परिणाम एक सूची स्वरूप में प्रदर्शित करता है, खोज परिणामों के समान. यह भी एक ग्रिड स्वरूप में परिणाम प्रदर्शित करने के लिए संभव है (अर्थात. HTML तालिका स्वरूप). ग्रिड स्वरूप में कुछ हालात बेहतर होते हैं. मैं इस लेख में उस प्रभाव को प्राप्त करने के लिए कैसे का वर्णन.
व्यापार परिदृश्य
मैं एक उद्यम-व्यापी काई rollout पर एक ग्राहक के साथ काम किया है. हम उनके वर्गीकरण बनाया गया है ऐसी है कि परियोजनाओं के पदानुक्रम में प्रथम श्रेणी के नागरिक हैं और उनके अपने शीर्ष स्तर साइट है. परियोजना प्रबंधकों परियोजना सारांश जानकारी का एक सिंगलटन सूची को बनाए रखने, ऐसे शीर्षक, बजट, पूरा होने के उम्मीद की तारीख, शेष बजट और अन्य सारांश प्रकार के फ़ील्ड् स. द्वारा "सिंगलटन" मेरा मतलब है एक कस्टम SharePoint सूची केवल एक आइटम होते हैं की गारंटी. Simplistically, यह इस तरह दिखता है:
तकनीकी दृष्टिकोण बहुत ही के रूप में वर्णित है यहाँ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP रेंडर करने के लिए HTML ब्राउज़र के लिए फेंकना करने के लिए कोई XSL ट्रांस्फ़ॉर्म का उपयोग करता है.
मैं हमेशा XSL में गोताखोरी से पहले क्योंकि XSL एक दुःस्वप्न है नतीजा कल्पना. यहाँ है मेरे वांछित परिणाम:
HTML इस तरह उस परिणाम उत्पन्न करता है:
|
<html>
<शरीर>
<केंद्र>
<तालिका बॉर्डर= 1>
<!-- लेबल->
<टी. आर. bgcolorब्लू =>
<td><फ़ॉन्ट रंग/ / u003d व्हाइट><ख>प्रोजेक्ट का नाम</ख></फ़ॉन्ट></td>
<td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><ख>पूर्ण दिनांक</ख></फ़ॉन्ट></td>
<td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><ख>बजट</ख></फ़ॉन्ट></td>
<td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><ख>वास्तविक व्यय</ख></फ़ॉन्ट></td>
<td><फ़ॉन्ट रंग/ / u003d व्हाइट><ख>समग्र स्थिति</ख></फ़ॉन्ट></td>
</टी. आर.>
<टी. आर.>
<td>कम्प्यूटर कक्ष पुनः वायर.</td>
<td संरेखित करेंसही =>02/01/08</td>
<td संरेखित करेंसही =>22,500.00</td>
<td संरेखित करेंसही =>19,000.00</td>
<td>प्रगति में</td>
</टी. आर.>
<टी. आर.>
<td>प्रावधान के लिए नवीनीकरण SQL सर्वर</td>
<td संरेखित करेंसही =>04/01/08</td>
<td संरेखित करेंसही =>7,500.00</td>
<td संरेखित करेंसही =>0.00</td>
<td>की योजना बनाई</td>
</टी. आर.>
</तालिका>
</केंद्र>
</शरीर>
</html>
|
दृष्टिकोण
ग्रिड बनाने के लिए इन चरणों का पालन करें:
- ग्रिड के घटकों की पहचान (पंक्तियाँ/स्तंभ).
- परिभाषित करें और आवश्यक साइट स्तंभ बनाना.
- उप साइटें परियोजनाओं और सिंगलटन सूचियों के लिए बनाएँ.
- CQWP एक वेब पेज को जोड़ने और यह आपकी सूचियों के लिए खोज करने के लिए कॉन्फ़िगर करें.
- CQWP XML ऊपर अतिरिक्त स्तंभों को इकट्ठा करने के लिए संशोधित करें.
- XSL एक मेज उत्पन्न करने के लिए संशोधित करें.
मैं नंबर छह पर ध्यान केंद्रित करने जा रहा हूँ. सीधे आगे और कुछ है कि किसी भी CQWP उपयोगकर्ता पहले से ही किया है चार के माध्यम से एक नंबर रहे हैं. संख्या पाँच MSDN से इस संपूर्ण स्क्रीन-शॉट लादेन लेख सहित अन्य लोगों द्वारा अच्छी तरह से प्रलेखित किया गया है यहाँ (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) और हीदर सुलैमान ब्लॉग यहाँ (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
नट और बोल्ट
आरंभ और MSDN प्रलेखन और हीदर सुलैमान के लेख के अनुसार पांच के माध्यम से एक कदम को लागू.
इस बिंदु पर, आप अपने CQWP पेज को जोड़ दिया है और आपके पास अपने <CommonViewFields> के रूप में आवश्यक कॉन्फ़िगर किया गया.
सामान्य चरणों का पालन, मैं इन मध्यवर्ती परिणाम प्राप्त:
1. कोई सामग्री प्रकार बनाना, एक templatized कस्टम सूची सामग्री प्रकार और दो साइटों के लिए. यहाँ सामग्री प्रकार है:
यहाँ साइट संरचना है:
2. मेरी परियोजना सबसाइट्स और सिंगलटन परियोजना सारांश सूचियाँ बनाने के बाद CQWP में जोड़ें:
3. मैं चाहता हूँ के माध्यम से सभी अतिरिक्त जानकारी जोड़ें <CommonViewFields>:
<संपत्ति नाम="CommonViewFields" प्रकार="स्ट्रिंग">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</संपत्ति>
ध्यान दें कि सभी गुण फ़ील्ड एक लाइन या इसे पर रखने के लिए मैंने काम नहीं होता (CQWP मुझे बताना होगा कि क्वेरी कोई आइटम नहीं लौटा).
4. इस बिंदु पर, हम MSDN आलेख से परे ले जाने के लिए तैयार कर रहे हैं और पर पर पलटें हीदर सुलैमान के लेख के लिए. उसके चरणों के निकट चरण शुरू करने का पालन करें #5 एक अनुकूलित बनाने के लिए / ItemStyle.xsl का unghosted संस्करण. मैं हीथ की सलाह का पालन करें, ऊपर चरण के माध्यम से 11 और इन मध्यवर्ती परिणाम प्राप्त:
4.1: मेरी XSL टेम्पलेट निम्नानुसार ही नाम दें:
<xsl:टेम्पलेट का नाम = "ग्रिड" मैच "पंक्ति =[@Style 'ग्रिड' =]" मोड = "itemstyle">
मैं भी थोड़ा उसे सुझाव दिया संशोधित करें <xsl:के लिए प्रत्येक …> जोड़ने के द्वारा एक <br /> टैग एक क्लीनर लिस्टिंग प्रदान करने के लिए:
<xsl:के लिए प्रत्येक का चयन करें="@*">
पी:<xsl:मान का का चयन करें="नाम()" /><br/>
</xsl:के लिए प्रत्येक>
4.2: मैं वेब पार्ट को संशोधित करें, उपस्थिति के लिए जाओ और मेरी "ग्रिड का चयन करें" शैली:
परिवर्तन लागू करें और यहाँ का परिणाम है:
हम से ऊपर क्षेत्रों हम चाहते हैं देख सकते हैं (प्रोजेक्ट का नाम, व्यय, स्थिति, आदि) हमारे लिए जब हम HTML का उत्सर्जन का उपयोग करने के लिए उपलब्ध हैं. इतना ही नहीं, लेकिन हम देखते हैं जिसके द्वारा हम XSL में उन स्तंभों का संदर्भ लेना चाहिए के नाम. उदाहरण के लिए, हम के रूप में "Project_x005F_x0020_Name" परियोजना की स्थिति का संदर्भ.
इस बिंदु पर, हम इन दिग्गजों के कंधों से और हीदर ब्लॉग से विदा, मैं मेरा अपना छोटा सा जोड़ें.
ContentQueryMain.xsl
नोट: जब परिवर्तन करने के साथ दोनों ContentQueryMain.xsl ही ItemStyle.xsl, आप की जरूरत है इससे पहले कि आप अपने परिवर्तनों के प्रभाव देखने में उन फ़ाइलों को वापस की जाँच करने के लिए.
ग्रिड बनाने के प्रयोजनों के लिए, काई हम देखते हैं एक CQWP से परिणाम का उत्पादन करने के लिए दो अलग अलग XSL फ़ाइलों का उपयोग करता है. आउटपुट का पिछला सा उत्पन्न करने के लिए, हम ItemStyle.xsl संशोधन. काई वास्तव में एक और XSL फ़ाइल का उपयोग करता है, अपने HTML जनरेट करने के लिए ItemStyle.xsl के साथ संयोजन के रूप में करने के लिए ContentQueryMain.xsl. जैसा कि इसके नाम का तात्पर्य, "मुख्य ContentQueryMain.xsl है" XSL कि अनुवाद के समग्र प्रवाह नियंत्रण. यह सब पाया आइटम के माध्यम से iterates और उन्हें टेम्पलेट् स के लिए एक से गुजरता है ItemStyle.xsl में. हम खुले उत्पन्न करने के लिए ItemStyle.xsl को संशोधित करेंगे <तालिका> टैग डेटा और समापन की पहली पंक्ति के प्रकाश का उत्सर्जन से पहले <तालिका> अंतिम पंक्ति उत्सर्जक के बाद टैग. यह पूरा करने के लिए, हमारे "ग्रिड के लिए दो मानकों से गुजारें को संशोधित किया गया है ContentQueryMain.xsl" ItemStyle.xsl में टेम्पलेट, "अंतिम पंक्ति" और "वर्तमान पंक्ति". ItemStyle.xsl ये सशर्त आवश्यक टैग फेंकना करने के लिए उपयोग करता है.
हीथ सोलोमन तकनीक का उपयोग करना, हम ContentQueryMain.xsl का पता लगाएँ. यह ItemStyle.xsl के रूप में एक ही स्थान में स्थित है. इस स्क्रीन शॉट में मदद चाहिए:
हम निम्नलिखित बदलाव करने की जरूरत:
- कोई xsl टेम्पलेट संशोधित करें, "CallItemTemplate" कि वास्तव में ItemStyle.xsl में हमारे ग्रिड टेम्पलेट invokes. इतना है कि यह डेटा यह सशर्त उत्पन्न खोलने और बंद करने के लिए की जरूरत है होगा हम ग्रिड टेम्पलेट को दो पैरामीटर पारित करेगा <तालिका> टैग.
- ContentQueryMain.xsl कि "CallItemTemplate कॉल का एक अन्य सा संशोधित करें" यह एक "LastRow पारित करने के लिए" तो उस LastRow हमारे ग्रिड टेम्पलेट के लिए पारित किया जा सकता पैरामीटर.
"OuterTemplate.CallItemTemplate नामक टेम्पलेट का पता लगाएँ" स्ट्रिंग द्वारा की पहचान की:
<xsl:टेम्पलेट नाम="OuterTemplate.CallItemTemplate">
पूरे टेम्पलेट निम्नानुसार बदलें:
|
<xsl:टेम्पलेट नाम="OuterTemplate.CallItemTemplate">
<xsl:परम नाम="CurPosition" />
<!--
"LastRow में जोड़ें" पैरामीटर.
आइटम शैली दर्रा में "ग्रिड" है जब हम केवल यह उपयोग करें.
-->
<xsl:परम नाम="LastRow" />
<xsl:चुनें>
<xsl:कब टेस्ट="@Style 'NewsRollUpItem' =">
<xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
<xsl:परम के साथ नाम="EditMode" का चयन करें="$cbq_iseditmode" />
</xsl:लागू टेम्पलेट्स>
</xsl:कब>
<xsl:कब टेस्ट="@Style 'NewsBigItem' =">
<xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
<xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
</xsl:लागू टेम्पलेट्स>
</xsl:कब>
<xsl:कब टेस्ट="@Style 'NewsCategoryItem' =">
<xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
<xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
</xsl:लागू टेम्पलेट्स>
</xsl:कब>
<!--
ग्रिड itemstyle.xsl टेम्पलेट के लिए पारित की वर्तमान स्थिति, और lastrow.
ItemStyle.xsl का उपयोग करेंगे कि खुले फेंकना करने के लिए और समापन <तालिका> टैग.
-->
<xsl:कब टेस्ट="@Style 'ग्रिड' =">
<xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
<xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
<xsl:परम के साथ नाम="अंतिम" का चयन करें="$LastRow" />
</xsl:लागू टेम्पलेट्स>
</xsl:कब>
<xsl:अन्यथा>
<xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
</xsl:लागू टेम्पलेट्स>
</xsl:अन्यथा>
</xsl:चुनें>
</xsl:टेम्पलेट>
|
टिप्पणी परिवर्तन के उद्देश्य का वर्णन.
बेशक, "OuterTemplate.CallItemTemplate" ही किसी अन्य टेम्पलेट से कहा जाता है. इस पाठ स्ट्रिंग के लिए खोज के द्वारा उस टेम्पलेट का पता लगाएँ:
<xsl:टेम्पलेट नाम="OuterTemplate.Body">
OuterTemplate.Body में दिए गए निर्देशों के माध्यम से स्क्रॉल करें और LastRow पैरामीटर निम्नानुसार डालें (तिर्छा में किसी टिप्पणी के रूप में दिखाया गया):
<xsl:कॉल-टेम्पलेट नाम="OuterTemplate.CallItemTemplate">
<xsl:परम के साथ नाम="CurPosition" का चयन करें="$CurPosition" />
<!-- LastRow पैरामीटर सम्मिलित करें. -->
<xsl:परम के साथ नाम="LastRow" का चयन करें="$LastRow"/>
</xsl:कॉल-टेम्पलेट>
इस सब के बाद, हम अंत में बातें इतना है कि हमारे ItemStyle.xsl का उत्सर्जन कर सकते हैं ठीक से सेट है <तालिका> सही जगह पर टैग.
ItemStyle.Xsl
नोट: फिर से, ItemStyle.xsl में इतनी है कि आप उन परिवर्तनों के प्रभाव को देख कोई भी परिवर्तन करने के बाद की जाँच करें.
हम यहाँ दो कार्य है:
- पूरे ग्रिड टेम्पलेट बदलें. आप प्रतिलिपि/नीचे से पेस्ट कर सकते हैं.
- "Formatcurrency में सक्षम बनाता है टेम्पलेट परिभाषा के बाहर कुछ mumbo जंबो जोड़ें" काम करने के लिए टेम्पलेट. (आप बता सकते हैं कि मैं XSL पर एक कमजोर हैंडल है).
प्रथम, शीर्ष ItemStyle.xsl के निकट, इस पंक्ति में जोड़ें:
<!-- कुछ mumbo जंबो कि अमेरिका को प्रदर्शित करने के लिए हमें सक्षम बनाता है. मुद्रा. -->
<xsl:दशमलव स्वरूप नाम="स्टाफ" अंक="घ" />
<xsl:टेम्पलेट नाम="डिफ़ॉल्ट" मैच="*" मोड="itemstyle">
ध्यान दें कि मैं यह सीधे पहले जोड़ा गया <xsl:टेम्पलेट का नाम = "डिफ़ॉल्ट" …> परिभाषा.
अगले, करने के लिए हमारी ग्रिड टेम्पलेट पर वापस जाना. पूरे ग्रिड टेम्पलेट नीचे दिए गए कोड के साथ बदलें. यह अच्छी तरह से टिप्पणी की है, लेकिन मुझे ईमेल या मेरे ब्लॉग पर टिप्पणियाँ छोड़ यदि आपके कोई प्रश्न हैं करने में संकोच नहीं करते.
|
<xsl:टेम्पलेट नाम="ग्रिड" मैच="पंक्ति[@Style 'ग्रिड' =]" मोड="itemstyle">
<!--
ContentMain.xsl CurPos और आखिरी गुजरता.
हम इन सशर्त खुले फेंकना करने के लिए उपयोग करें और समापन <तालिका> टैग.
-->
<xsl:परम नाम="CurPos" />
<xsl:परम नाम="अंतिम" />
<!-- निम्न चर से मानक ItemStyle.xsl unmodified हैं -->
<xsl:चर नाम="SafeImageUrl">
<xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetSafeStaticUrl">
<xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'ImageUrl'"/>
</xsl:कॉल-टेम्पलेट>
</xsl:चर>
<xsl:चर नाम="SafeLinkUrl">
<xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetSafeLink">
<xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'LinkUrl'"/>
</xsl:कॉल-टेम्पलेट>
</xsl:चर>
<xsl:चर नाम="DisplayTitle">
<xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetTitle">
<xsl:परम के साथ नाम="शीर्षक" का चयन करें="@Title"/>
<xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'LinkUrl'"/>
</xsl:कॉल-टेम्पलेट>
</xsl:चर>
<xsl:चर नाम="LinkTarget">
<xsl:अगर टेस्ट="@OpenInNewWindow = 'सच'" >_ blank</xsl:अगर>
</xsl:चर>
<!--
यहाँ हम एक चर को परिभाषित, "tableStart". यह होता है कि हम के रूप में अच्छी तरह से तालिका में स्तंभ लेबल के उद्घाटन को परिभाषित करने के लिए उपयोग HTML. ध्यान दें कि यदि CurPos = 1, यह भी शामिल है में एक CDATA टैग HTML.
अन्यथा, यह खाली हो जाएगा.
हर बार जब ItemStyle ContentQueryMain.xsl के द्वारा कहा जाता है tableStart का मान emited है.
-->
<xsl:चर नाम="tableStart">
<xsl:अगर टेस्ट="$CurPos = 1">
<![CDATA[
<तालिका बॉर्डर = 1>
<tr bgcolor = "ब्लू">
<td><फ़ॉन्ट रंग "व्हाइट" =><ख>प्रोजेक्ट का नाम</ख></फ़ॉन्ट></td>
<टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>पूर्ण दिनांक</ख></फ़ॉन्ट></td>
<टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>बजट</ख></फ़ॉन्ट></td>
<टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>वास्तविक व्यय</ख></फ़ॉन्ट></td>
<td><फ़ॉन्ट रंग "व्हाइट" =><ख>समग्र स्थिति</ख></फ़ॉन्ट></td>
</टी. आर.>
]]>
</xsl:अगर>
</xsl:चर>
<!--
एक और चर, tableEnd बस को परिभाषित करता है समापन टेबल टैग.
TableStart साथ के रूप में, यह हमेशा emited है. यही कारण है इसकी कीमत सशर्त चाहे हम अंतिम पंक्ति ContentQueryMain.xsl द्वारा पारित किया गया है पर आधारित सौंपा है.
-->
<xsl:चर नाम="tableEnd">
<xsl:अगर टेस्ट="$CurPos = $Last">
<![CDATA[ </तालिका> ]]>
</xsl:अगर>
</xsl:चर>
<!--
हमेशा tableStart की सामग्री का उत्सर्जन. यदि यह पहली पंक्ति हमारे लिए ContentQueryMain.xsl द्वारा पारित नहीं है, तो हम जानते हैं कि इसका मान रिक्त हो जाएगा.
आउटपुट से बचने क्योंकि अक्षम करें जब tableStart इसे खाली नहीं, यह भी शामिल है कि हम ब्राउज़र के द्वारा रेंडर किया जा करने के लिए चाहते हैं वास्तविक HTML. यदि हम बता नहीं अक्षम करने के लिए XSL पार्सर उत्पादन से बचने, यह सामान की तरह उत्पन्न होगा"&लेफ्टिनेंट;तालिका&जी. टी.;" के बजाय"<तालिका>".
-->
<xsl:मान का का चयन करें="$tableStart" अक्षम करें आउटपुट बचने="हाँ"/>
<टी. आर.>
<!--
पी:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
-->
<td>
<xsl:मान का का चयन करें="@Project_x005F_x0020_Name"/>
</td>
<td संरेखित करें="दाईं ओर">
<xsl:मान का का चयन करें="@Project_x005F_x0020_End_x005F_x0020_Date"/>
</td>
<td संरेखित करें="दाईं ओर">
<xsl:कॉल-टेम्पलेट नाम="formatcurrency">
<xsl:परम के साथ नाम="मान" का चयन करें="@Project_x005F_x0020_Budget"></xsl:परम के साथ>
</xsl:कॉल-टेम्पलेट>
</td>
<td संरेखित करें="दाईं ओर">
<xsl:कॉल-टेम्पलेट नाम="formatcurrency">
<xsl:परम के साथ नाम="मान" का चयन करें="@Project_x005F_x0020_Expenses"> </xsl:परम के साथ>
</xsl:कॉल-टेम्पलेट>
</td>
<td>
<xsl:मान का का चयन करें="@Project_x005F_x0020_Status"/>
</td>
<!--
निम्न सभी टिप्पणी है बाहर बातों को स्पष्ट करने के लिए.
हालांकि, इसे वापस लाने के लिए और में यह सामान एक <td> उसके प्रभाव को देखने के लिए.
-->
<!--
<div id = "linkitem" वर्ग = "" आइटम>
<xsl:यदि परीक्षण "स्ट्रिंग लंबाई =($SafeImageUrl) != 0">
<div कक्षा "छवि-क्षेत्र-बाएँ" =>
<एक href = "{$SafeLinkUrl}" लक्ष्य = "{$LinkTarget}">
<आइएमजी कक्षा "छवि-निश्चित-चौड़ाई =" src = "{$SafeImageUrl}" alt = "{@ImageUrlAltText}"/>
</एक>
</div>
</xsl:अगर>
<div वर्ग = "लिंक-आइटम">
<xsl:कॉल-टेम्पलेट name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<एक href = "{$SafeLinkUrl}" लक्ष्य = "{$LinkTarget}" शीर्षक = "{@LinkToolTip}">
<xsl:मान का चयन करें "$DisxslyTitle" = />
</एक>
<div वर्ग = "विवरण">
<xsl:select="@Description मान का" />
</div>
</div>
</div>
-->
</टी. आर.>
<!--
समापन का उत्सर्जन टेबल टैग. अगर हम अंतिम पंक्ति पर नहीं कर रहे हैं,
इस रिक्त हो जाएगा.
-->
<xsl:मान का का चयन करें="$tableEnd" अक्षम करें आउटपुट बचने="हाँ"/>
</xsl:टेम्पलेट>
<xsl:टेम्पलेट नाम="formatcurrency">
<xsl:परम नाम="मान" का चयन करें="0" />
<xsl:मान का का चयन करें='संख्या स्वरूप($मान, "$DDD,DDD,DDD.डीडी", "कर्मचारियों")' />
</xsl:टेम्पलेट>
|