ti-enxame.com

Como salvar campos personalizados nos componentes principais

Estou tentando adicionar um campo simples 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, impedindo que o campo personalizado seja salvo?

Atualização: Na esperança de que o campo personalizado estivesse 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>
22
GDP

A AHA! moment - #__content não possui mais a coluna params, portanto, os seguintes ajustes devem ser feitos para que o plug-in funcione com componentes/tabelas com attribs em vez de params (que parece ser apenas #__content a partir da v3.2):

  1. Mude o nome fields para "attribs"
  2. Mude o nome fieldset para algo único (usei o nome do plugin)
  3. Adicione uma sequência de idiomas para a guia na página de edição de conteúdo

/ forms/content.xml

<form>
    <fields name="attribs" >
        <fieldset name="gdp" >
            <field
                name="myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

pt-BR.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"
19
GDP