web-dev-qa-db-ja.com

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を使い続けたいと思います。

4
user1889

件名フィールドは、連絡先フォームを構成する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"を削除するか、件名フィールドを完全に削除します。また、質問で説明したように、テンプレートオーバーライドファイルからフィールドの呼び出しを削除します。

次に、プラグイン管理ページで、サイト用にオーバーライドするコンポーネントを指定する必要があります。

プラグインのヘルプページ

2
FFrewin