2011-02-23 8 views
7

मैंने एक कस्टम सामग्री प्रकार बनाया है जो OOTB SharePoint चित्र सामग्री प्रकार से प्राप्त होता है। मैंने जो एकमात्र अनुकूलन किया है वह एक साधारण यूआरएल फ़ील्ड जोड़ना है, और बेस फ़ील्ड पर दो फ़ील्ड को हटा देना है। नीचे देखें:SharePoint 2010: RemoveFieldRef और Inherits = "TRUE"

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <!-- Parent ContentType: Picture (0x010102) --> 
    <ContentType ID="0x0101020027f16ab27e6e45a6848c25c47aaa7053" 
       Name="Custom Picture" 
       Description="" 
       Group="Custom" 
       Inherits="TRUE" 
       Version="0"> 
     <FieldRefs> 
      <RemoveFieldRef ID="{b66e9b50-a28e-469b-b1a0-af0e45486874}" Name="Keywords" /> 
      <RemoveFieldRef ID="{a5d2f824-bc53-422e-87fd-765939d863a5}" Name="ImageCreateDate" /> 
      <FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" DisplayName="URL" Required="FALSE" /> 
     </FieldRefs> 
    </ContentType> 
</Elements> 

अगर मैं अपने कस्टम सामग्री प्रकार के आधार पर एक तस्वीर पुस्तकालय बनाने के लिए, "URL" फ़ील्ड है कि मैं नए रूपों/संपादन में प्रकट होता है जोड़ा, फिर भी दो क्षेत्रों है कि मैं दूर करने के लिए कर रहे हैं का प्रयास किया है प्रदर्शित भी, यानी निकालेंफ़िल्फ़रफ को अनदेखा किया जा रहा है। यदि मैं सामग्री प्रकार को "साइट सेटिंग्स -> सामग्री प्रकार गैलरी" में देखता हूं, तो ये दो फ़ील्ड अभी भी सूचीबद्ध हैं।

अपने कस्टम सामग्री प्रकार (see MSDN definition) सफलतापूर्वक सिर्फ इन दोसे खेतों को हटा "साइट सेटिंग्स -> सामग्री प्रकार गैलेरी" पर विरासत में मिली = "false" स्थापना पेज, हालांकि तब में से कोई भी आधार फ़ील्ड नए/संपादन रूपों में प्रदर्शित होते हैं - केवल मेरा कस्टम "यूआरएल" फ़ील्ड।

यह सुनिश्चित करने के लिए मैं क्या कर सकता हूं कि आधार "चित्र" सामग्री प्रकार के सभी फ़ील्ड मेरी तस्वीर लाइब्रेरी के नए/संपादन रूपों पर प्रदर्शित किए गए हैं, जिन्हें मैंने विशेष रूप से हटा दिया है?

+0

दो बातें की कोशिश करो उदाहरण टाइप करें '

+2

निकासी को निकालना RemoveFieldRef समस्या के समाधान से अधिक कामकाज है। इसी तरह, मुझे पता चला कि मैं इनहेरिट्स = "TRUE" छोड़ सकता हूं और अवांछित फ़ील्ड को छिपी = "TRUE" पर सेट कर सकता हूं। हालांकि अगर मैं दर्जनों क्षेत्रों के साथ सामग्री प्रकार का उपयोग कर रहा था तो यह इतना मोहक नहीं हो सकता है। तो अभी भी देख रहे हैं ... –

उत्तर

1

मुझे विश्वास है कि इस मुद्दे की प्रकृति को समझने के लिए कि सामग्री प्रकार विरासत कैसे काम करता है।

MSDN से (http://msdn.microsoft.com/en-us/library/aa544268.aspx)

तो विरासत में मिली सही है, बच्चे सामग्री प्रकार सभी क्षेत्रों कि माता-पिता में हैं इनहेरिट ,> फ़ील्ड समेत फ़ील्ड समेत।

यदि इनहेरिट्स गलत या अनुपस्थित है और मूल सामग्री प्रकार एक अंतर्निहित प्रकार है, तो बच्चे> सामग्री प्रकार केवल उन फ़ील्ड को विरासत में रखता है जो मूल सामग्री प्रकार में थे> जब SharePoint Foundation स्थापित किया गया था। बच्चे सामग्री प्रकार में कोई फ़ील्ड नहीं है जो उपयोगकर्ता ने मूल सामग्री प्रकार में जोड़ा है।

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

मुझे लगता है कि उपरोक्त कुंजी वाक्यांश है "यदि इनहेरिट्स सत्य है, तो बाल सामग्री प्रकार उन सभी फ़ील्ड को विरासत में लेता है जो उपयोगकर्ताओं द्वारा जोड़े गए फ़ील्ड समेत हैं।"

इसका मतलब यह है कि जो कुछ भी आप करने के लिए निर्धारित करते हैं उसे पूरा करने के लिए आपको विरासत में सत्य नहीं मिला होगा और आपको उन सभी फ़ील्ड के लिए फील्डरफ तत्व शामिल करना होगा जिन्हें आप अपनी सामग्री प्रकार में उपयोग करना चाहते हैं।

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

ये साइटें यहां वर्णित हैं का समर्थन करती हैं।निकाला जा रहा है `Inherits` 1. या 2. सेटिंग को इनहेरिट = झूठी और सिर्फ अपनी सामग्री के लिए खेतों माता पिता से आप चाहते हैं को संदर्भित:

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