質問

Plone には、サイト用の「Google サジェスト」のような機能を備えた美しい検索ボックスがあります。PDF などのアップロードされたドキュメントのインデックスも作成します。Django サイトでこの種の機能を提供できるモジュールを知っている人はいますか?

役に立ちましたか?

解決

Plone は、インデックス付き属性の別個のメタデータ テーブルを維持することによって LiveSearch 機能を実装します (最終更新日、作成者、タイトルなどのフィールドは、コンテンツ オブジェクトからこのテーブルにコピーされます)。その後、コンテンツ オブジェクトは ObjectAdded/ObjectModified/ObjectRemoved イベントを送信し、イベント サブスクライバーはこれらのイベントをリッスンしてメタデータ テーブルを更新します (Django ではイベントは名前付きシグナルです)。次に、メタデータを検索して適切な LiveSearch HTML を返す固定 URL で公開されるブラウザ ビューがあり、最後に各 HTML ページに適切な JavaScript が送信されて、オートコンプリート AJAX 機能を処理してこのビューをクエリし、結果の HTML 結果をドム。

LiveSearch で複数のモデル/コンテンツ タイプをクエリしたい場合は、独自のイベントを送信し、サブスクライバーにそれらを適切に処理させる必要がある可能性があります。これは、小規模なデータ セットやトラフィックの少ないサイトでは必要ありません。この場合、1 回の検索で複数のクエリを実行することによるパフォーマンスの低下は問題ではなく (または、1 つのコンテンツ タイプのみを検索したい場合)、複数のクエリを実行するだけで済みます。ビューからのクエリ。

JavaScript 側に関しては、独自の JavaScript ライブラリを開発することも、既存の JavaScript ライブラリを使用することもできます。これは通常、JS ライブラリではオートコンプリートと呼ばれます。手始めに YUI オートコンプリートと Scriptaculous オートコンプリートがあり、さらに多くの JavaScript オートコンプリート実装が存在する可能性があります。Plone は JavaScript ライブラリに KSS を使用しています。抜粋するサンプル コードを探している場合は、KSS livesearch プラグインから始めるのが良いでしょう。

http://pypi.python.org/pypi/kss.plugin.livesearch

Django で KSS を使用するためのチュートリアル:

http://kssproject.org/docs/tutorial/kss-in-django-with-kss-django-application

KSS は、クライアント側で動作とコンテンツを (JavaScript を記述する必要がなく) 明確に分離するため、非常に優れていますが、Scriptaculous は概念的にもう少し単純で、ドキュメントがいくらか優れています (http://github.com/madrobby/scriptaculous/wikis/ajax-autocompleter).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top