カスタムコンポーネントリストビューにコア検索ツールを実装しています。検索ツールをクリックすると、以下のフォームが完璧に表示されます。
ドロップダウンをクリックして、特定のステータス(例:「ゴミ箱」)を選択すると、ページが送信され、フォームはゴミ箱に入れられたレコードのみで読み込まれます。これも完璧です。
ページの読み込みが完了すると、デフォルトでは検索ツールにフィルターが表示されません。ユーザーは、検索ツールボタンをクリックしてフィルターを開き、選択したステータスをリセットする必要があります。
デフォルトでフィルターを表示するように検索ツールを作成するにはどうすればよいですか?
以下のようにオプションを追加することができました
JLayoutHelper::render(
'joomla.searchtools.default',
array('view' => $this,
'options' => array('filtersHidden' =>$hidden)));
$ hiddenが0に設定されている場合、検索ツールは非表示になりません。この変数は、選択したフィルター値に基づいて適切に設定します。
フィルターフィールドは、コンストラクターのモデルの$ config ['filter_fields']配列にリストされている場合、自動的に入力されます。
例えば:
public function __construct ($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'id', 'a.id',
'title', 'a.title',
'alias', 'a.alias',
'checked_out', 'a.checked_out',
'checked_out_time', 'a.checked_out_time',
'catid', 'a.catid',
'category_title',
'published', 'a.published',
'access', 'a.access',
'access_level',
'created', 'a.created',
'created_by', 'a.created_by',
'ordering', 'a.ordering',
'featured', 'a.featured',
'language', 'a.language',
'hits', 'a.hits',
'publish_up', 'a.publish_up',
'publish_down', 'a.publish_down'
);
}
parent::__construct($config);
}
私は同じ問題に遭遇しましたが、それが何であるかまで追跡しました。これは、フィルターをセットアップするための複数ステップのプロセスです。
あなたのビューでは、この行を表示関数に追加する必要があります
$this->activeFilters = $this->get('ActiveFilters');
Docblockがある場合は、パブリック変数として指定する必要があります。
/**
* List of active filters
*
* @var array
* @since 1.0
*/
public $activeFilters = array();
最後に、フィルターをテンプレートファイルに追加します。
echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));