Estou tentando adicionar um campo único e simples a cada item do conteúdo #__ e segui com muito cuidado o tutorial em Adicionando campos personalizados aos componentes principais , substituindo "conteúdo" por "contato". Agora eu tenho um plug-in instalável que inclui com sucesso a guia / campo no formulário de edição do Item de Conteúdo do Administrador e funciona maravilhosamente, exceto pelo incómodo recurso de "salvar".
A única referência a Salvar é (novamente, conteúdo em vez de contato):
Os campos adicionais são carregados no arquivo forms / contact.xml no diretório do plug-in. É importante que esses campos estejam em um elemento de campos com a propriedade name definida como "params". Se você não definir esse nome de propriedade, os campos aparecerão no site de administração, mas os valores não serão salvos.
O fato de esta nota de advertência existir sugere para mim que o Joomla deve saber que os campos estão lá e o código principal lida com isso, mas como não está salvando, estou me perguntando se há outro evento que devo adicionar.
Aqui está o campo simples que eu preciso - invisível para o usuário, mas crítico, no entanto, e nem perto da necessidade de um CCK para armazená-lo.
O que está errado / ausente que está impedindo que o campo personalizado seja salvo?
Atualização: Na esperança de que o campo personalizado fosse armazenado no banco de dados, adicionei uma coluna à tabela #__content com o mesmo nome e tentei - sem sorte.
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 renderizado (sem o rótulo)
<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>