質問: オプションタブからcom_contentのカスタムフィールドを分離する コンテンツプラグインとoncontentprepareformトリガーを使用して、記事の編集ページにカスタムの追加フィールドを挿入します。問題は、私のカスタムフィールドタブが記事の[オプション]タブ(layouts// joomla/edit/params)とバインドすることです。つまり、フォーム<fields> oncontentprepareformで注入され、「オプション」タブ(params/attribフォームレイアウト)と連動して「生成」されます。com_contentには、記事オプションタブ(およびその他のタブ)を表示/非表示にする設定があります。しかし、私のカスタムタブはこの表示/非表示もリッスンします。私が欲しいのは、記事のオプションを「オプション」でコンポーネントのデフォルトに設定し、ユーザーに対して非表示にし、カスタムフィールドタブのみを表示することです。しかし、私は今のところ成功していません。私が何を探すべきかについて誰か誰か知っていますか?
回答: プラグインでそのすべての機能を取得することは難しいでしょう。 joomlaがフォーム/タブに使用するxmlフォームシステムは、それ自体を構築する方法がかなり複雑です。また、私の知る限り、xmlのどのフォームをロードするかを変更できる主要な「イベント」はありません(そのため、いくつかの名前を変更するか、別のフィールドを追加するjoomlaの更新によって、イベントが台無しになります)。しかし、これが私の考えです。//regex $regex = '/\<input[^>]*\stype=\"hidden\"[^>]*\sname=\"jform\[params\]\[plugin\]\"[^>]*\sid=\"jform_params_plugin\"[^>]*\svalue=\"1\"[^>]*\s\/\>/i'; //check for match if(preg_match($regex,$buffer)){ //bind an xml form $xml = simplexml_load_file(path_to_xml_file.'.xml'); if($form = jform::getinstance((string)$xml->name,$xml->asxml())){ $arr = array(); //here you need to build an array to auto fill the data from the form, //if you already had this working to an extent i am sure it will be fine. $form->bind($arr); } $content = ''; //here you need to basically get the form fields into content as text to be added to //the current output, there are many ways to do this. //replace the current output of joomla to add the extra fields $buffer = preg_replace($regex,$content,$buffer); jfactory::getdocument()->setbuffer($buffer, 'component'); } 説明すると、最初の正規表現は、ページの現在の出力でフォームフィールドを見つけることです(これは[オプション]タブのフィールドである場合があります)。一致が見つかった場合は、フィールドのxmlファイルをロードし、それらを自分のものに置き換えます。ある程度の距離があるとおっしゃっていたので、これはそれに基づいているだけかもしれません。