2011-10-24 9 views
9

मैं ऑर्चर्ड में एक विषय (मेरे पास मौजूद एक मौजूदा टेम्पलेट को परिवर्तित करने) की कोशिश कर रहा हूं लेकिन ब्लॉग अभिलेखागार विजेट स्टाइल करते समय मैं अटक गया। मेरे पास एक ज़ोन "साइडबार" है जिसमें मैंने विजेट रखा था।ऑर्चर्ड में विजेट कैसे स्टाइल करें?

आदेश में करने के लिए यह उत्पादन मार्कअप मैं मैं अपने विचारों में एक नया खाका बनाया चाहते फ़ोल्डर: विजेट-BlogArchives.cshtml सभी टेम्पलेट यह इतना की तरह एक div में विजेट की सामग्री लपेट करता है:

<div class="box box_small"> 
    @Display(Model.Content) 
</div> 

तो मुझे उम्मीद है कि सभी विजेट सामग्री मेरे div के अंदर हो। हालांकि सृजित HTML इस तरह दिखता है:

<article class="widget-blog-archives widget" shape-id="15"> 
    <header shape-id="15"> 
    <h1 shape-id="15">The Archives</h1> 
    </header> 
    <div class="box box_small" shape-id="15"> 
    <div class="archives" shape-id="16"> 
     <ul class="archiveMonthList" shape-id="16"> 
     <li class="first last" shape-id="16"> 
     <a href="(shortened)/10" shape-id="16">October 2011 (1)</a> 
    </li> 
    </ul> 
    </div> 
    </div> 
</article> 

क्या मुझे समझ नहीं आता है, जहां पूरे लेख रैपिंग से आ रही है? मैं अपने div में हेडर कैसे प्राप्त कर सकता हूं और इसे बदल सकता हूं?

क्या कोई भी यह बता सकता है कि मॉडल में "अभिलेखागार" शीर्षक कहां रखा गया है? मैंने आकृति ट्रेसिंग टूल में मॉडल को देखा लेकिन इसे नहीं मिला ...

धन्यवाद।

अद्यतन

के रूप में बर्ट्रेंड समझाया मैं अपने विजेट-BlogArchives.cshtml लिए कुछ परिवर्तन किए:

@using Orchard.ContentManagement 
@using Orchard.Widgets.Models 
@{ 
    Model.Metadata.Wrappers.Clear(); 
    var title = ((IContent)Model.ContentItem).As<WidgetPart>().Title; 
} 
<div class="box box_small"> 
    <h3>@title</h3> 
    @Display(Model.Content) 
</div> 

यह अब एचटीएमएल मैं चाहता हूँ उत्पन्न करता है।

उत्तर

4

यह मार्कअप विजेट रैपर से आता है। Model.Metadata.Wrappers.Clear() को कॉल करके रैपर को दबाना संभव है। फिर आप अपने स्वयं के विजेट ओवरराइड से प्रतिपादन पूरी तरह से ले सकते हैं।

var title = ((IContent)Model.ContentItem).As<WidgetPart>().Title; 

कौन सा भी इस तरह से किया जा सकता है:

var title = Model.ContentItem.WidgetPart.Title 
+0

धन्यवाद बर्ट्रेंड

आप widget.wrapper.cshtml खोलते हैं, तो आप अपने दूसरे सवाल का जवाब मिल जाएगा। रैपर को साफ़ करने के लिए मैं कोड कहां रखूं? और क्या यह स्टाइलिंग विगेट्स का एक अनुशंसित तरीका है या क्या मुझे विजेट-BlogArchives.cshtml की बजाय रैपर ओवरराइड करना चाहिए? मैं अभी भी सभी अवधारणाओं को समझने की कोशिश कर रहा हूं और सर्वोत्तम प्रथाएं क्या हैं। – b3n

+0

आप उस कोड को अपने विजेट टेम्पलेट ओवरराइड में डाल देंगे। आप जो कुछ करने की कोशिश कर रहे हैं उसके आधार पर विजेट-blogarchives.cshtml की तरह कुछ (आकृति ट्रेसिंग में उपलब्ध विकल्पों को देखें, यह तय करने के लिए कि आप कौन सी चाहते हैं; आप संभवतः विजेट को वैकल्पिक विकल्प जोड़ना चाहते हैं, और अधिक संभावनाएं प्राप्त करने के लिए)। आप वैकल्पिक रैपर नहीं कर सकते हैं, इसलिए विजेट रैपर टेम्पलेट को ओवरराइड करना सभी विगेट्स के लिए इसे ओवरराइड करेगा। शायद आप जो चाहते हैं वह नहीं। तो हाँ यह चीजों को करने का एक बिल्कुल सही तरीका है। –

+0

हां मुझे वैकल्पिक सुविधा सक्षम है, इसलिए विजेट ओवरराइडिंग- BlogArchives.cshtml। मैं बस काम नहीं कर सका जहां शीर्षक आया था क्योंकि मुझे इसे आकार ट्रेसिंग टूल में नहीं मिला। – b3n