すべてのchosen.js
タグがプレーンHTMLになるように<select>
を無効にしましたが、これまでのところ、inputbox
のデフォルトクラスを選択したクラスに変更できません(特にコンポーネントページの検索ツールフィルター)。
フォームのオーバーライドに関する多くの回答とチュートリアルを見てきましたが、例を理解していないか、間違った種類のオーバーライドを調べています。
最終的に、<select>
で生成されるlibraries\cms\html\select.php
のクラスを変更したいと思います。テンプレートにパス/ファイルを追加しようとしましたが、それを行うことができません。以下のように$options
でフィールドを生成しているのがわかりますが、THATがどこで決定および提供されているのかわかりません。
$options Array (
[format.depth] => 0
[format.eol] =>
[format.indent] =>
[id] => filter_event_group_id
[list.attr] => class="inputbox" onchange="this.form.submit()"
[list.translate] =>
[option.key] => value
[option.text] => text
[list.select] =>
)
リストフォームフィールドタイプ でXMLに指定する私の試みも失敗しています-ページは空白になりますが、私のフィールドは実際には SQLフォームフィールドタイプ これは、SelectのようにClassパラメータをサポートしていないようです。
<field name="created_by" class="MyChosenClassname" type="sql"...`
したがって、問題は、このオーバーライドをテンプレートに適切に追加する方法、または生成された<select>
タグで使用するクラス名を指定する方法ですか。
JQueryを使用してカスタムクラスを追加する方が簡単だと思います。
このJavaScriptコードスニペットをテンプレートのヘッドセクションに配置するだけで、テンプレート/フレームワークプロバイダーの大部分が、簡単に追加できるカスタムJavaScriptコードをサポートします。
$(document).ready(function(){
$('select').addClass('custom_class');
});
次のように、XMLフィールドにclass
属性を追加できるだけです。
<field name="foo" class="MYCLASS" type="list" label="My List">
<option value="0">Option 1</option>
<option value="1">Option 2</option>
</field>