各#__contentアイテムに単一の単純なフィールドを追加しようとしています。「連絡先」を「コンテンツ」に置き換えて、コアコンポーネントへのカスタムフィールドの追加のチュートリアルを注意深く実行しました。管理コンテンツアイテムの編集フォームにタブ/フィールドが正常に含まれているインストール可能なプラグインがあり、その厄介な「保存」機能を除いて、素晴らしい動作をします。
Savingへの唯一の参照は(もう一度、連絡先ではなくコンテンツ):
追加のフィールドは、プラグインディレクトリのforms / contact.xmlファイルからロードされます。これらのフィールドは、nameプロパティが「params」に設定されたfields要素にあることが重要です。このプロパティ名を設定しない場合、フィールドは管理サイトに表示されますが、値は保存されません。
この注意書きが存在するという事実は、Joomlaがフィールドが存在することを知っているべきであり、コアコードがそれを処理することを示唆していますが、保存されていないので、追加すべきイベントが他にあるのではないかと思っています。
ここに私が必要とするシンプルなフィールドがあります-ユーザーには見えませんが、それでも重要であり、それを保存するためのCCKの必要性の近くにはありません。
カスタムフィールドを保存できない原因は何ですか?
更新:カスタムフィールドがデータベースに保存されていることを期待して、#__ contentテーブルに同じ名前の列を追加してみました-運はありませんでした。
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(ラベルなし)
<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>