Ich versuche, jedem #__content-Element ein einzelnes, einfaches Feld hinzuzufügen, und ich habe das Lernprogramm unter Hinzufügen benutzerdefinierter Felder zu Kernkomponenten , in dem "Kontakt" durch "Inhalt" ersetzt wird, sehr sorgfältig befolgt . Ich habe jetzt ein installierbares Plugin, das die Registerkarte / das Feld im Bearbeitungsformular für Admin-Inhaltselemente erfolgreich enthält und mit Ausnahme dieser lästigen Funktion zum "Speichern" hervorragend funktioniert.
Der einzige Hinweis zum Speichern ist (wieder Inhalt statt Kontakt):
Die zusätzlichen Felder werden aus der Datei forms / contact.xml in das Plugin-Verzeichnis geladen. Es ist wichtig, dass sich diese Felder in einem fields-Element befinden, dessen name -Eigenschaft auf "params" festgelegt ist. Wenn Sie diesen Eigenschaftsnamen nicht festlegen, werden die Felder auf der Verwaltungswebsite angezeigt, die Werte werden jedoch nicht gespeichert.
Die Tatsache, dass dieser Warnhinweis vorhanden ist, legt für mich nahe, dass Joomla wissen sollte, dass die Felder vorhanden sind, und dass der Kerncode damit umgeht.
Hier ist das einfache Feld, das ich brauche - für den Benutzer unsichtbar, aber dennoch kritisch, und bei weitem nicht die Notwendigkeit eines CCK, es zu speichern.
Was ist falsch / fehlt, das verhindert, dass das benutzerdefinierte Feld gespeichert wird?
Update: In der Hoffnung, dass das benutzerdefinierte Feld in der Datenbank gespeichert wurde, habe ich der Tabelle #__content den gleichen Namen hinzugefügt und versucht - kein Glück.
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>
Gerendertes HTML (ohne das Etikett)
<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>
Antworten:
Die AHA! moment - #__content hat die
params
Spalte nicht mehr , daher müssen die folgenden Anpassungen vorgenommen werden, damit das Plugin mit Komponenten / Tabellen mitattribs
statt funktioniertparams
(was ab v3.2 nur noch #__content zu sein scheint):fields
Namen in "attribs"fieldset
Namen in einen eindeutigen Namen (ich habe den Namen des Plugins verwendet)/forms/content.xml
de-DE.plg_content_pass.ini
quelle