web-dev-qa-db-ja.com

検索ツールはデフォルトでは開いていません

カスタムコンポーネントリストビューにコア検索ツールを実装しています。検索ツールをクリックすると、以下のフォームが完璧に表示されます。

enter image description here

ドロップダウンをクリックして、特定のステータス(例:「ゴミ箱」)を選択すると、ページが送信され、フォームはゴミ箱に入れられたレコードのみで読み込まれます。これも完璧です。

ページの読み込みが完了すると、デフォルトでは検索ツールにフィルターが表示されません。ユーザーは、検索ツールボタンをクリックしてフィルターを開き、選択したステータスをリセットする必要があります。

デフォルトでフィルターを表示するように検索ツールを作成するにはどうすればよいですか?

9
Malaiselvan

以下のようにオプションを追加することができました

JLayoutHelper::render(
  'joomla.searchtools.default', 
   array('view' => $this, 
  'options' => array('filtersHidden' =>$hidden)));

$ hiddenが0に設定されている場合、検索ツールは非表示になりません。この変数は、選択したフィルター値に基づいて適切に設定します。

7
Malaiselvan

フィルターフィールドは、コンストラクターのモデルの$ 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);
}
3
Nagarjun

私は同じ問題に遭遇しましたが、それが何であるかまで追跡しました。これは、フィルターをセットアップするための複数ステップのプロセスです。

  1. フィルターを機能させるには、models/formsフォルダーにfilter_.xmlファイルを追加する必要があります。これは通常のJoomla XMLファイルを取ります。
  2. モデルで@Nagarjunによって言及されているようにフィルターを設定する必要があります
  3. あなたのビューでは、この行を表示関数に追加する必要があります

    $this->activeFilters = $this->get('ActiveFilters');
    
  4. Docblockがある場合は、パブリック変数として指定する必要があります。

    /**
      * List of active filters
      *
      * @var    array
      * @since  1.0
      */
    public $activeFilters = array();
    
  5. 最後に、フィルターをテンプレートファイルに追加します。

    echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));
    
1
RolandD