Çekirdek bileşenlerinde Özel Alanlar nasıl kaydedilir


22

Her #__content öğesine tek, basit bir alan eklemeye çalışıyorum ve Çekirdek Bileşenlere Özel Alan Ekleme konusundaki öğreticiyi, "contact" yerine "contact" ifadesini izleyerek çok dikkatli bir şekilde takip ettim . Artık Yönetici İçeriği Öğesi düzenleme formundaki sekmeyi / alanı başarıyla içeren ve bu sinir bozucu "kaydetme" özelliği dışında harika çalışan, yüklenebilir bir eklenti var.

Tasarruf için tek referans (yine temas yerine içerik):

Ek alanlar, eklenti dizinindeki forms / contact.xml dosyasından yüklenir. Bu alanların "params" olarak ayarlanmış name özelliğinin bir alan öğesinde olması önemlidir. Bu özellik adını ayarlamazsanız, alanlar yönetici sitesinde görünecek ancak değerler kaydedilmeyecektir.

Bu uyarıcı notun var olduğu gerçeği, bana Joomla'nın alanların orada olduğunu bilmesi gerektiğini ve çekirdek kodun bunu işleyeceğini, ancak tasarruf etmediğinden, eklemem gereken başka bir olay olup olmadığını merak ediyorum.

İşte ihtiyacım olan basit alan - kullanıcıya görünmez, ancak yine de eleştirel ve saklamak için hiçbir yerde bir CCK'ye ihtiyaç yok.
Özel alanın kaydedilmesini engelleyen yanlış / eksik olan nedir?

Güncelleme: Özel alanın veritabanında saklandığı umudunun ötesinde, aynı adla #__content tablosuna bir sütun ekledim ve denedim - şanssız.

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>

İşlenen HTML (etiketsiz)

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

Bunu, param ve NOT alanlarına ayarlı DEĞİL alan adıyla çalışırken gördüğümü hatırlıyorum ; ama bu biraz çirkin ve her yükseltme sonrası biraz bakım gerektirecek. Bu tür işleri yapmayı sevdiğimden, sonuç almak için bunun yerine kullanıcı profili eklentisi yaklaşımını kullanmayı düşündünüz mü?
Riccardo Zorn

Verilerim içerik içindir, kullanıcı değil ... sadece öğretici irtibatlar içindir
GDP

Üzgünüm net değildim, sadece onContentAfterSave olayını bağlayın ve tasarruf bölümünü ele alın
Riccardo Zorn

Bunun için çok teşekkür ederim. Bunu bir günün en iyi kısmı için çözmeye çalışıyordum. Joomla eklentisinin geliştirilmesinde oldukça yeniyim, bu yüzden beni devam ettirmek için örneklere güveniyorum. Dil dizgisi dosyalarını sadece onaylayabilir miyim? Bunlar eklenti dosyalarında mı yoksa mevcut dil klasöründe mi? ya da önemli değil mi?

Dosyaları her zaman Joomla eklentisinin koyacağı yere, yani bu durumda / languages ​​klasörüne koyarım.
GSYİH

Yanıtlar:


19

AHA! moment - #__content artık paramssütuna sahip olmadığı için, eklentinin attribsyerine bileşenlerle / tablolarla çalışabilmesi için aşağıdaki ayarların yapılması gerekir params(bu v3.2'den yalnızca #__content gibi görünüyor):

  1. Değiştir fields"ATTRIBS" adını
  2. fieldsetAdı benzersiz bir şeyle değiştirin (Eklenti adını kullandım)
  3. İçerik düzenleme sayfasındaki sekme için bir dil dizesi ekleyin

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

Bununla ilgili bir soru sorabilir miyim? ya da yeni bir soru oluşturmalı mıyım? bununla ilgili mi? Temel olarak, makale düzenleme görünümünde birden fazla sekmenin nasıl ekleneceğini bilmem gerekiyor. Forms / extra.xml, yalnızca bir sekme oluşturmanıza izin verir. Xml dosyasını tarla takımlarına bölmenin birkaç değişik varyasyonunu denedim ama şanssız. Sadece bir sekme.
Jonnypixel

Bununla ilgili yeni bir soru yaratmalı ve eğer varsa bu soruya / cevaba bir link eklemelisiniz.
Bogowoe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.