Bagaimana cara menyimpan Bidang Kustom di komponen Core


22

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 , menggantikan "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 disimpannya bidang khusus?

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

/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 yang diterjemahkan (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>

Saya ingat melihat ini beraksi dengan nama bidang TIDAK diatur ke params dan bidang tambahan; tapi itu agak jelek dan akan membutuhkan beberapa pemeliharaan setelah setiap peningkatan. Sama seperti saya suka mendapatkan hal-hal semacam ini untuk bekerja, untuk mendapatkan hasil Anda, sudahkah Anda mempertimbangkan untuk menggunakan pendekatan plugin profil pengguna?
Riccardo Zorn

Data saya adalah untuk konten, bukan pengguna ... hanya tutorial untuk kontak
GDP

Maaf saya tidak jelas, cukup kaitkan acara onContentAfterSave dan tangani bagian simpanan
Riccardo Zorn

Terima kasih banyak atas ini. Saya telah mencoba menyelesaikan masalah ini untuk bagian terbaik dari sehari. Saya cukup baru dalam pengembangan plugin Joomla, jadi saya mengandalkan contoh untuk membuat saya maju. Bisakah saya mengkonfirmasi tentang file string bahasa - apakah ini cocok dengan file plugin atau dalam folder bahasa yang ada? atau tidak masalah?

Saya selalu meletakkan file di tempat yang sama dengan ekstensi Joomla, yaitu folder / bahasa dalam kasus ini.
PDB

Jawaban:


19

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

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

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

dapatkah saya bertanya tentang hal ini di sini? atau haruskah saya membuat pertanyaan baru? ini terkait dengan ini? Pada dasarnya saya perlu tahu cara menambahkan lebih dari satu tab ke tampilan edit artikel. Tampaknya formulir / extra.xml hanya memungkinkan Anda membuat satu tab. Saya mencoba beberapa variasi pemisahan file xml ke dalam fieldsets tetapi tidak berhasil. Hanya satu tab.
Jonnypixel

Anda harus membuat pertanyaan baru tentang ini, dan menambahkan tautan ke pertanyaan / jawaban ini jika terkait.
Bogowoe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.