2016-08-18 2 views
1

Archetypesベースのコンテンツを持つPloneサイトがいくつかあります。Plone:portal_catalogの汎用検索フォーム

バニラportal_catalog検索フォーム(manage_catalogView)は、言語でフィルタリングできることに気付きました。portal_type(one!)とパスのみ - これは常に利用可能なためです。

このように、他の条件でクイック検索が必要なときはいつでも、これにはプログラミングが含まれます。スローアウェイScript (Python)を書く。

設定されたすべての検索インデックスを提供する一般的な検索フォームを提供する拡張機能はありますか?例:

  • のID
  • 作成時のためCreator
  • 検索を検索するための検索(minmaxための2つのフィールド、;それらの一方または両方を使用することができる)
  • レビュー状態(使用選択可能な選択肢のための別個の値)
  • ...
+0

これにはOOTBアドオンはありません。これまでコレクションを使って本当に近くに行くことができます。 ところで、あなたはこの種の活動のために外部の方法をとにかく必要としません。シンプルなPythonスクリプトで十分です! –

+0

申し訳ありませんが、私は外部の方法を述べました。それはポイントではありません。だから、使用可能な汎用検索フォームはありませんか?本当に?!希望の答えではなく、答え。 – Tobias

+1

私は最近使用されていない古いアドオン(collective.formcriteria)がありますが、ロットを助けることができます。それはまだコレクションに基づいていますが、コレクションの基準に基づいて検索フォームを表示します。 –

答えて

0

はおそらく、私はあなたの質問をmissunderstoodが、カタログ検索やカスタム拡張のための外部メソッドは必要ありません。 Pythonスクリプトオブジェクトを使用し、urlから直接呼び出すことができます。

ZMIルートに移動し、右上の選択フィールドを使用してスクリプト(python)を追加します。 idを与え、サンプルの内容を削除します。

あなたはhttp://docs.plone.org/develop/plone/searching_and_indexing/query.html

で見つけるとTEST]タブまたは[フォームのURLを使用してスクリプトを呼び出しますqueryCatalogまたはsearchCatalogの例を使用してください。

例:ZMIルートフォルダに

、私はPythonスクリプトを作成したが、あなたのPythonスクリプトにいくつかのパラメータを設定した場合は最後に、あなたはまた、URLまたはTESTを介してそれらを渡すことができmy_test

catalog = context.portal_catalog 
from DateTime import DateTime 

# DateTime deltas are days as floating points 
end = DateTime() + 0.1 
start = DateTime() - 1 
date_range_query = { 'query':(start,end), 'range': 'min:max'} 

query = {'id': ['id_1', 'id_2'], 
     'Creator': ['creator1', 'creator2'], 
     'created': date_range_query, 
     'review_state': ['published', 'pending']} 

results = catalog.queryCatalog(query) 

for brain in results: 
    print brain.pretty_title_or_id() 

return printed 

と呼ばれますタブ。

希望します。

+0

はい、あなたは私の質問を誤解しました。私はプログラミングでカタログを使用する方法を知っています(Externalメソッドについて言及すると、少し誤解を招くようでした)。私はより強力な一般的なseachフォームに興味があります。 – Tobias