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>