วิธีบันทึกฟิลด์ที่กำหนดเองในองค์ประกอบหลัก


22

ฉันกำลังพยายามเพิ่มฟิลด์เดียวที่เรียบง่ายให้กับรายการ #__content แต่ละรายการและฉันได้ปฏิบัติตามบทแนะนำอย่างระมัดระวังที่การเพิ่มฟิลด์ที่กำหนดเองให้กับองค์ประกอบหลักโดยแทนที่ "เนื้อหา" สำหรับ "ผู้ติดต่อ" ตอนนี้ฉันมีปลั๊กอินที่ติดตั้งได้ซึ่งรวมแท็บ / ฟิลด์บนฟอร์มการแก้ไขรายการเนื้อหาของผู้ดูแลระบบและทำงานได้อย่างยอดเยี่ยมยกเว้นคุณสมบัติ "บันทึก" ที่น่ารำคาญ

การอ้างอิงถึงการบันทึกเท่านั้นคือ (อีกครั้งเนื้อหาแทนการติดต่อ):

ฟิลด์เพิ่มเติมถูกโหลดจากฟอร์มไฟล์ / contact.xml ในไดเรกทอรีปลั๊กอิน สิ่งสำคัญคือเขตข้อมูลเหล่านี้อยู่ในองค์ประกอบเขตข้อมูลที่มีคุณสมบัติชื่อตั้งค่าเป็น "params" หากคุณไม่ได้ตั้งชื่อคุณสมบัตินี้ฟิลด์จะปรากฏในไซต์ผู้ดูแลระบบ แต่ค่าจะไม่ถูกบันทึก

ความจริงที่ว่ามีคำเตือนนี้อยู่แนะนำให้ฉันรู้ว่า Joomla ควรรู้ว่ามีทุ่งนาและรหัสหลักจัดการกับมัน แต่เนื่องจากมันไม่ได้บันทึกฉันสงสัยว่ามีอีกเหตุการณ์ที่ฉันควรเพิ่ม

นี่คือฟิลด์ง่าย ๆ ที่ฉันต้องการ - ผู้ใช้ไม่สามารถมองเห็นได้ แต่สิ่งสำคัญยังคงอยู่และไม่มีที่ไหนใกล้กับความต้องการของ 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>

ฉันจำได้ว่าเห็นสิ่งนี้ในการดำเนินการกับชื่อเขตข้อมูลไม่ได้ตั้งค่าเป็น params และเขตข้อมูลพิเศษ; แต่มันก็ค่อนข้างน่าเกลียดและจะต้องมีการบำรุงรักษาหลังจากการอัพเกรดแต่ละครั้ง มากที่สุดเท่าที่ฉันชอบที่จะทำให้สิ่งต่าง ๆ ทำงานเพื่อให้คุณได้ผลลัพธ์คุณเคยพิจารณาใช้วิธีปลั๊กอินโปรไฟล์ผู้ใช้แทนหรือไม่?
Riccardo Zorn

ข้อมูลของฉันสำหรับเนื้อหาไม่ใช่ผู้ใช้ ... มีเพียงการสอนสำหรับผู้ติดต่อ
GDP

ขออภัยฉันไม่ชัดเจนเพียงแค่ขอเหตุการณ์ onContentAfterSave และจัดการส่วนการประหยัด
Riccardo Zorn

ขอบคุณมากสำหรับเรื่องนี้. ฉันพยายามเรียงลำดับส่วนที่ดีที่สุดของวันนี้ ฉันค่อนข้างใหม่กับการพัฒนาปลั๊กอินของ Joomla ดังนั้นฉันจึงต้องพึ่งพาตัวอย่างเพื่อให้ฉันไปต่อ ฉันสามารถยืนยันเกี่ยวกับไฟล์สตริงภาษาได้หรือไม่ - ไปกับไฟล์ปลั๊กอินหรือในโฟลเดอร์ภาษาที่มีอยู่หรือไม่ หรือไม่เป็นไร?

ฉันมักจะวางไฟล์ไว้ในที่เดียวกับที่ส่วนขยายของ Joomla จะใส่ไว้นั่นคือโฟลเดอร์ / languages ​​ในกรณีนี้
GDP

คำตอบ:


19

AHA! ครู่ - #__content ไม่มีparamsคอลัมน์อีกต่อไปดังนั้นจึงต้องทำการปรับเปลี่ยนต่อไปนี้เพื่อให้ปลั๊กอินทำงานกับส่วนประกอบ / ตารางด้วยattribsแทนparams(ซึ่งปรากฏเป็น #__content ตั้งแต่ v3.2) เท่านั้น:

  1. เปลี่ยนfieldsชื่อเป็น "attribs"
  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>

en-GB.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"

ฉันสามารถถามคำถามเกี่ยวกับสิ่งนี้ได้ที่นี่ หรือฉันควรสร้างคำถามใหม่ มันเกี่ยวข้องกับเรื่องนี้? โดยทั่วไปฉันจำเป็นต้องรู้วิธีเพิ่มมากกว่าหนึ่งแท็บในมุมมองการแก้ไขบทความ ดูเหมือนว่า Forms / extra.xml จะอนุญาตให้คุณสร้างหนึ่งแท็บเท่านั้น ฉันลองแบ่งไฟล์ xml หลายรูปแบบออกเป็นชุดเขตข้อมูล แต่ก็ไม่มีโชค เพียงหนึ่งแท็บ
Jonnypixel

คุณควรสร้างคำถามใหม่เกี่ยวกับเรื่องนี้และเพิ่มลิงค์ไปยังคำถาม / คำตอบนี้หากเกี่ยวข้อง
Bogowoe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.