कोर घटकों में कस्टम फ़ील्ड को कैसे सहेजा जाए


22

मैं प्रत्येक #__content आइटम में एक एकल, सरल क्षेत्र जोड़ने की कोशिश कर रहा हूं, और मैंने "कॉन्टैक्ट" के लिए "सामग्री" को प्रतिस्थापित करते हुए, कस्टम घटकों को कोर घटकों में जोड़ने के लिए बहुत सावधानी से अनुसरण किया है । मेरे पास अब एक इंस्टॉल करने योग्य प्लगइन है जिसमें सफलतापूर्वक व्यवस्थापक सामग्री आइटम संपादन फ़ॉर्म पर टैब / फ़ील्ड शामिल है, और उस pesky "बचत" सुविधा को छोड़कर, आश्चर्यजनक रूप से काम करता है।

सहेजने का एकमात्र संदर्भ है (फिर, संपर्क के बजाय सामग्री):

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

तथ्य यह है कि यह सावधानी नोट मौजूद है, मुझे सुझाव देता है कि जूमला को पता होना चाहिए कि क्षेत्र वहां हैं, और कोर कोड इसे संभालता है, लेकिन चूंकि यह बचत नहीं कर रहा है, इसलिए मैं सोच रहा हूं कि क्या कोई और घटना है जिसे मुझे जोड़ना चाहिए।

यहाँ पर मुझे जो सरल क्षेत्र चाहिए वह है - उपयोगकर्ता के लिए अदृश्य, लेकिन फिर भी महत्वपूर्ण है, और कहीं भी इसे संग्रहीत करने के लिए CCK की आवश्यकता के पास नहीं है।
क्या गलत / गायब है जो कस्टम फ़ील्ड को सहेजने से रोक रहा है?

अद्यतन: उम्मीद से परे है कि कस्टम फ़ील्ड डेटाबेस में संग्रहीत किया गया था, मैंने उसी नाम के साथ #__content तालिका में एक कॉलम जोड़ा और कोशिश की - कोई भाग्य नहीं।

gdp.php

class plgContentGdp extends JPlugin {
    protected $autoloadLanguage = true;
    function onContentPrepareForm($form, $data) {
        $app = JFactory::getApplication();
        $option = $app->input->get('option');
        switch($option) {
            case 'com_content':
                if ($app->isAdmin()) {
                    JForm::addFormPath(__DIR__ . '/forms');
                    $form->loadFile('content', false);
                }
                return true;
        }
        return true;
    }
}

/forms/content.xml

<?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params" >
        <fieldset name="params" >
            <field
                name="content_myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

रेंडर किया गया HTML (लेबल के बिना)

<div class="tab-pane active" id="attrib-params">
    <div class="control-group ">
        <div class="controls">
            <input
                type="text"
                value=""
                id="jform_params_content_myfield"
                name="jform[params][content_myfield]"
                class=""
                aria-invalid="false"
                >
        </div>
    </div>
</div>

मुझे याद है कि फील्ड नाम के साथ एक्शन में इसे देखकर पारस और एक्स्ट्रा फील्ड को सेट नहीं किया गया था; लेकिन यह थोड़ा बदसूरत है और प्रत्येक उन्नयन के बाद कुछ रखरखाव की आवश्यकता होगी। जितना मैं इस तरह की चीजों को काम करना पसंद करता हूं, आपको परिणाम प्राप्त करने के लिए, क्या आपने इसके बजाय उपयोगकर्ता प्रोफ़ाइल प्लगइन दृष्टिकोण का उपयोग करने पर विचार किया है?
रिकार्डो ने

मेरा डेटा सामग्री के लिए है, उपयोगकर्ता के लिए नहीं ... केवल ट्यूटोरियल संपर्कों के लिए है
जीडीपी

क्षमा करें, मैं स्पष्ट नहीं था, बस ऑनकंट एवेंट घटना को हुक करूं और बचत वाले हिस्से को संभालूं
रिकार्डो

इस के लिए बहुत बहुत धन्यवाद। मैं इसे एक दिन के सर्वश्रेष्ठ भाग के लिए छांटने की कोशिश कर रहा हूं। मैं जूमला प्लगइन विकास के लिए काफी नया हूं इसलिए मुझे जाने के लिए उदाहरणों पर भरोसा है। क्या मैं भाषा स्ट्रिंग फ़ाइलों के बारे में पुष्टि कर सकता हूं - क्या ये प्लगइन फ़ाइलों के साथ या मौजूदा भाषा फ़ोल्डर में जाते हैं? या यह कोई महत्त्व नहीं रखता?

मैं हमेशा एक ही जगह पर फाइलें रखता हूं कि एक जूमला एक्सटेंशन उन्हें इस मामले में / भाषाओं / फ़ोल्डर में डाल देगा।
जीडीपी

जवाबों:


19

अहा! क्षण - #__content में अब paramsकॉलम नहीं है, इसलिए प्लगइन के attribsबजाय घटक / तालिकाओं के साथ काम करने के लिए निम्नलिखित समायोजन किया जाना चाहिए params(जो केवल v3.2 के रूप में #__content प्रतीत होता है):

  1. fields"एट्रिब्यूट्स" का नाम बदलें
  2. fieldsetनाम को कुछ विशिष्ट में बदलें (मैंने प्लगइन नाम का उपयोग किया)
  3. सामग्री संपादन पृष्ठ पर टैब के लिए एक भाषा स्ट्रिंग जोड़ें

/forms/content.xml

<form>
    <fields name="attribs" >
        <fieldset name="gdp" >
            <field
                name="myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

एन GB.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"

क्या मैं यहाँ इस बारे में एक प्रश्न पूछ सकता हूँ? या क्या मुझे एक नया प्रश्न बनाना चाहिए? इससे संबंधित है? मूल रूप से मुझे यह जानने की जरूरत है कि लेख संपादित दृश्य में एक से अधिक टैब को कैसे जोड़ा जाए। ऐसा लगता है कि फ़ॉर्म / extra.xml केवल आपको एक टैब बनाने की अनुमति देता है। मैंने xml फ़ाइल को फ़ील्ड्स में विभाजित करने के कई रूपों की कोशिश की, लेकिन कोई भाग्य नहीं। केवल एक टैब।
जॉनीपिक्सल

आपको इस बारे में एक नया प्रश्न बनाना चाहिए, और यदि संबंधित हो तो इस प्रश्न / उत्तर के लिए एक लिंक जोड़ें।
बोगोवो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.