質問: 'com_templates.style') { jform::addformpath('pathtofolder'); $form->loadfile('xmlfile', false, false , true); } } 正常に動作します今ではデフォルトでtemplatedetails.xmlにあります私はparamsフィールドグループを空にします... <config> <fields name="params"> </fields> </config> ... また、正常に動作し、xmlファイルのデフォルトのパラメータを表示します。ここで、templatedetails.xml内に追加するだけで、既存のデフォルトパラメータを上書きするオプションをユーザーに提供したいと思います。例protostarのデフォルトtemplatebackgroundcolorの値をf4f6f7からff6600に変更しました<config> <fields name="params"> <fieldset name="advanced"> <field name="templatebackgroundcolor" class="" type="color" default="#ff6600" label="tpl_protostar_background_color_label" description="tpl_protostar_background_color_desc" /> </fieldset> </fields> </config> これも機能しますが、フィールドは間違った位置にあり、最初のフィールドとして上に配置され、2番目になりました。loadfile()およびload()メソッドによると、フィールドをその正確な場所でオーバーライドする必要があります。 https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/form/form.php#l851 https://github.com/joomla/ joomla-cms/blob/staging/libraries/joomla/form/form.php#l727 ここで何が欠けていますか?ロードはテンプレートxmlの直前に起動しましたか?どんな助けでもありがたいです。
回答: いいえ、フィールドを上書きするのではなく、ノードを上書きします。あなたのケースでは、node:fieldset-> name:advanced node:field-> name:templatebackgroundcolor ...をマージしています...node:fieldset-> name:advanced node:field-> name:templatecolor ... node:field-> name:templatebackgroundcolor ... ...フィールドセットノードの順序は、templatebackgroundcolorです。元のフィールドセットノードの順序は、templatecolor、templatebackgroundcolorです。joomlaドキュメントの文言から、フィールドを「インプレース」でマージしているが、xmlを「インプレース」でマージしていることを意味するため、混乱します。順序を維持する最良の方法は、ファイルに追加することですまたは、xmlを操作するために、多くの下位レベルのフォームapiを使用できます。文書化された機能と実際の機能の問題を修正するために、フォームapiは時々変更されるため、お勧めしません