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


9

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

ここに画像の説明を入力してください

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

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

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

回答:


7

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

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

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


3

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

ありがとう。しかし、機能していません。これらのフィールドをコンストラクターのconfig変数で構成しましたが、それでも「検索ツール」ボタンをクリックしてフィルターオプションを開く必要があります。ソースの表示についてさらに調査を行ったところ、"filtersHidden":true私の場合は常にtrueに設定されていることがわかりました。
マライセルヴァン2015年

1

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

  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));
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.