it-swarm-id.com

Bagaimana cara menyimpan Bidang Kustom di komponen Core

Saya mencoba menambahkan satu bidang sederhana ke setiap item #__content, dan saya telah dengan sangat hati-hati mengikuti tutorial di Menambahkan Bidang Kustom ke Komponen Inti , mengganti "konten" untuk "kontak". Saya sekarang memiliki plugin yang dapat diinstal yang berhasil menyertakan tab/bidang pada formulir pengeditan Item Konten Admin, dan berfungsi dengan sangat baik, kecuali untuk fitur "penghematan" yang sial itu.

Satu-satunya referensi untuk Menyimpan adalah (sekali lagi, konten alih-alih kontak):

Kolom tambahan diambil dari bentuk file/contact.xml di direktori plugin. Penting bahwa bidang-bidang ini dalam elemen bidang dengan properti nama diatur ke "params". Jika Anda tidak menyetel nama properti ini, bidang akan muncul di situs admin tetapi nilainya tidak akan disimpan.

Fakta bahwa catatan peringatan ini ada, menunjukkan kepada saya bahwa Joomla harus mengetahui bidang-bidang yang ada, dan kode inti menanganinya, tetapi karena itu tidak menyimpan, saya bertanya-tanya apakah ada peristiwa lain yang harus saya tambahkan.

Inilah bidang sederhana yang saya butuhkan - tidak terlihat oleh pengguna, namun tetap penting, dan tidak ada yang dekat dengan kebutuhan CCK untuk menyimpannya.
Apa yang salah/hilang yang mencegah bidang khusus diselamatkan?

Pembaruan: Berharap melampaui harapan bahwa bidang khusus disimpan dalam database, saya menambahkan kolom ke tabel #__content dengan nama yang sama dan mencoba - tidak berhasil.

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;
    }
}

/form/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>

Rendered HTML (tanpa label)

<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>
22
GDP

AHA! moment - #__content tidak lagi memiliki kolom params, jadi penyesuaian berikut harus dibuat agar plugin dapat bekerja dengan komponen/tabel dengan attribs alih-alih params (yang tampaknya hanya menjadi #__content pada v3.2):

  1. Ubah nama fields menjadi "attribs"
  2. Ubah nama fieldset menjadi sesuatu yang unik (saya menggunakan nama plugin)
  3. Tambahkan string bahasa untuk tab pada halaman pengeditan konten

/ form/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"
19
GDP