J'essaie d'ajouter un seul champ simple à chaque élément #__content, et j'ai suivi très attentivement le didacticiel sur l' ajout de champs personnalisés aux composants principaux , en remplaçant "contenu" par "contact". J'ai maintenant un plugin installable qui inclut avec succès l'onglet / champ sur le formulaire d'édition de l'élément de contenu Admin, et fonctionne à merveille, à l'exception de cette fonctionnalité de "sauvegarde" embêtante.
La seule référence à l'enregistrement est (encore une fois, le contenu au lieu du contact):
Les champs supplémentaires sont chargés à partir du fichier forms / contact.xml dans le répertoire du plugin. Il est important que ces champs soient dans un élément fields avec la propriété name définie sur "params". Si vous ne définissez pas ce nom de propriété, les champs apparaîtront dans le site d'administration mais les valeurs ne seront pas enregistrées.
Le fait que cette mise en garde existe, me suggère que Joomla devrait savoir que les champs sont là et que le code principal le gère, mais comme il ne sauvegarde pas, je me demande s'il y a un autre événement que je devrais ajouter.
Voici le champ simple dont j'ai besoin - invisible pour l'utilisateur, mais critique néanmoins, et loin de la nécessité d'un CCK pour le stocker.
Qu'est-ce qui ne va pas / manque qui empêche l'enregistrement du champ personnalisé?
Mise à jour: Espérant au-delà de l'espoir que le champ personnalisé a été stocké dans la base de données, j'ai ajouté une colonne à la table #__content avec le même nom et j'ai essayé - pas de chance.
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 rendu (sans l'étiquette)
<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>
Réponses:
L'AHA! moment - #__content n'a plus la
params
colonne, donc les ajustements suivants doivent être faits pour que le plugin fonctionne avec des composants / tables avecattribs
au lieu deparams
(qui ne semble être #__content qu'à partir de la version 3.2):fields
nom en "attribs"fieldset
nom en quelque chose d'unique (j'ai utilisé le nom du plugin)/forms/content.xml
en-GB.plg_content_pass.ini
la source