私は主にできるだけオーバーライドで作業するので、/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"を削除するか、件名フィールドを完全に削除します。また、質問で説明したように、テンプレートオーバーライドファイルからフィールドの呼び出しを削除します。
次に、プラグイン管理ページで、サイト用にオーバーライドするコンポーネントを指定する必要があります。