質問: com_contactの件名フィールドを完全かつ安全に削除するにはどうすればよいですか? 私は主にできるだけオーバーライドで作業するので、/templates/.../html/com_contact/contact/default_form.php件名を表示するコードを削除できることはわかっています。<div class="control-group"> <div class="control-label"><?php echo $this->form->getlabel('contact_subject'); ?></div> <div class="controls"><?php echo $this->form->getinput('contact_subject'); ?></div> </div> しかし問題は、フォームに入力したときに、件名をチェックするための検証がまだそこにあるということです。これを削除するにはコアハックが必要になりますが、とにかくオーバーライドを使用してそれを行うことはありますか?または安全に、更新時に元に戻らないようにしますか?インストールで実行するプラグインの数を制限するために、可能な限りcom_contactを使い続けたいと思います。
回答: 件名フィールドは、連絡先フォームを構成するxmlファイルで必要になるように設定されています。ここに行くとこれを見ることができます:components/com_contact/models/forms/contact.xml 次に、行〜23:<field name="contact_subject" type="text" id="contact-emailmsg" size="60" description="com_contact_contact_message_subject_desc" label="com_contact_contact_message_subject_label" filter="string" validate="contactemailsubject" required="true" /> おそらく必要なのは、このxmlファイルをオーバーライドすることです。参考までに、ここで同様の質問を見つけることができます: オーバーライドするコアコンポーネントモデルフォームxml これを実現する最も簡単で手間のかからない方法は、 form xml overrides plugin を使用することです。プラグインをインストールして有効にすると、contact.xmlファイルのコピーを作成して、templates/system/forms/com_contact/contact.xmlに配置できます。*****formsフォルダーを作成する必要があります。件名フィールドからrequired = "true"を削除するか、件名フィールドを完全に削除します。また、質問で説明したように、テンプレートオーバーライドファイルからフィールドの呼び出しを削除します。次に、プラグイン管理ページで、サイト用にオーバーライドするコンポーネントを指定する必要があります。 プラグインのヘルプページ