Sto cercando di aggiungere un singolo campo semplice per ogni elemento #__content e ho seguito con molta attenzione il tutorial su Aggiunta di campi personalizzati ai componenti principali , sostituendo "contenuto" con "contatto". Ora ho un plug-in installabile che include correttamente la scheda / campo nel modulo di modifica dell'elemento di contenuto dell'amministratore e funziona meravigliosamente, tranne per quella fastidiosa funzione di "salvataggio".
L'unico riferimento a Salvataggio è (di nuovo, contenuto anziché contatto):
I campi aggiuntivi vengono caricati dal file forms / contact.xml nella directory dei plugin. È importante che questi campi si trovino in un elemento di campi con la proprietà name impostata su "params". Se non si imposta questo nome di proprietà, i campi verranno visualizzati nel sito di amministrazione ma i valori non verranno salvati.
Il fatto che questa nota cautelativa esista, mi suggerisce che Joomla dovrebbe sapere che i campi sono presenti e che il codice principale lo gestisce, ma poiché non sta salvando, mi chiedo se ci sia un altro evento che dovrei aggiungere.
Ecco il semplice campo di cui ho bisogno: invisibile per l'utente, ma critico, e in nessun luogo vicino alla necessità di un CCK di memorizzarlo.
Cosa c'è di sbagliato / mancante che impedisce il salvataggio del campo personalizzato?
Aggiornamento: sperando oltre la speranza che il campo personalizzato fosse archiviato nel database, ho aggiunto una colonna alla tabella #__content con lo stesso nome e ho provato - senza fortuna.
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 renderizzato (senza etichetta)
<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>