「onPrepareFinderContent」を処理するプラグインを作成するためのチュートリアルや手順はどこにありますか?
Com_content記事にいくつかの追加フィールドを追加しました。これらのフィールドをFinderエンジンでインデックスに登録したいと考えています。
インデックスが作成されるFinderIndexerResult
オブジェクトに新しい要素を追加する方法を探しています。
Plugins/Finder/content/content.phpの311行目でこのコード行を確認しました。
// Get content extras.
FinderIndexerHelper::getContentExtras($item);
FinderIndexerHelper :: getContentExtras関数は、インデックス付けされるFinderIndexerResultオブジェクトを受け入れ、「onPrepareFinderContent」イベントをトリガーします。これにより、(おそらく)3dpartyプラグインがインデックス付けされるコンテンツを追加または変更できるようになります。
あなたの何人かはこれについての経験を持っていますか、または私にいくつかの良いチュートリアル/ドキュメントを指摘できますか?
Com_contentでいくつかの追加フィールドを実行しました。これを行うために使用するメソッドは、独自のテーブルなどを指定する際にかなりカスタムであるため、この情報をcom_Finderにマージするために使用できる本当に反復可能なメソッドはないと思います。
Finderのコンテンツインデクサープラグインをフォークし、追加したフィールドを呼び出すように設定することをお勧めします。
まず、FinderでgetListQueryを変更して、追加のフィールドテーブルに結合します。
https://github.com/joomla/joomla-cms/blob/staging/plugins/Finder/content/content.php#L341
その後、追加のフィールド(JRegistryオブジェクト?)の保存方法に応じて、クエリで取得した追加のフィールドを確認するようにFinderに指示する必要があります。
私はあなたがそれをいくつかのメタ情報として追加することになると思います: .php#L286
お役に立てれば
SobiPro-Smart Searchプラグインを使用して、追加のフィールドをgetItemsに追加し、FinderIndexerResultとしてインデックス付けされるアイテムを処理し、後で各アイテムのindexに追加しました。 説明各追加フィールドの:
protected function index(FinderIndexerResult $item, $format = 'html')
{
...
$fields = $this->_fields[$item->section];
foreach ($fields as $f)
{
$nid = $f->get('nid');
if (isset($item->$nid))
{
$item->addInstruction(FinderIndexer::TEXT_CONTEXT, $nid);
}
}
...