Próbuję dodać jedno, proste pole do każdego elementu #__content i bardzo uważnie postępowałem zgodnie z samouczkiem w temacie Dodawanie niestandardowych pól do podstawowych składników , zastępując „treść” słowem „kontakt”. Mam teraz instalowalną wtyczkę, która z powodzeniem zawiera kartę / pole w formularzu edycji elementu treści administratora i działa doskonale, z wyjątkiem tej irytującej funkcji „zapisywania”.
Jedynym odniesieniem do Zapisywania jest (ponownie treść zamiast kontaktu):
Dodatkowe pola są ładowane z pliku form / contact.xml w katalogu wtyczek. Ważne jest, aby te pola znajdowały się w elemencie field z właściwością name ustawioną na „params”. Jeśli nie ustawisz tej nazwy właściwości, pola pojawią się w witrynie administratora, ale wartości nie zostaną zapisane.
Fakt, że ta uwaga istnieje, sugeruje mi, że Joomla powinna wiedzieć, że pola tam są, a główny kod sobie z tym radzi, ale skoro nie zapisuje, zastanawiam się, czy istnieje inne wydarzenie, które powinienem dodać.
Oto proste pole, którego potrzebuję - niewidoczne dla użytkownika, ale mimo to krytyczne i nigdzie nie potrzeba CCK do jego przechowywania.
Co jest źle / brakuje, co uniemożliwia zapisanie niestandardowego pola?
Aktualizacja: Mając nadzieję, że niestandardowe pole zostało zapisane w bazie danych, dodałem kolumnę do tabeli #__content o tej samej nazwie i spróbowałem - bez powodzenia.
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>
Renderowany HTML (bez etykiety)
<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>
Odpowiedzi:
AHA! moment - #__content nie ma już
params
kolumny, więc należy wprowadzić następujące korekty, aby wtyczka działała z komponentami / tabelamiattribs
zamiastparams
((która wydaje się być #__content od wersji 3.2):fields
nazwę na „atrybuty”fieldset
nazwę na coś unikalnego (użyłem nazwy wtyczki)/forms/content.xml
en-GB.plg_content_pass.ini
źródło