数か月後、進行中のコンポーネントに戻る必要がありました。これはthoughtが、保存していたデータのインデックスを自動的に作成していましたas保存されました。実行中のコードに慣れ親しんでいると、自動インデックス作成が行われていないことがわかりました(もう)。私の人生では、インデックス作成メソッドが起動している場所を見つけることはできません。また、それを実現する方法を説明しているものをオンラインで見つけることもできません。
CLIインデクサーを実行するとインデックス作成が実行されるので、コードが機能することはわかっています。コンポーネントで欠落している(またはおそらく実装されていない)ため、コードが自動的に起動することがわかりません。私は勉強しました Creating a Smart Search Plugin 、そしてそれは使用するメソッドとイベントを説明しますが、それをモデルに実装する例を説明したり与えたりしていません。
これらすべてのイベントとメソッドが格納/名前付け/継承され、動的に構築されて実行されるため、コアJoomlaコードの精練はあまり役に立ちませんでした。
モデル->save()
を使用する場合、何かをロード/トリガーする必要がありますか、それともモデル自体に忘れた、または欠けているものがありますか?
SmartSearchをサポートするには、コンポーネントのFinder
プラグインを作成する必要があります。例として_plugins/Finder/content/content.php
_を使用できます。最小限のスケルトンは
_class PlgFinderYourcomponent extends FinderIndexerAdapter
{
/**
* Method to index an item.
*
* @param FinderIndexerResult $item The item to index as a FinderIndexerResult object.
*
* @return boolean True on success.
*
* @since 2.5
* @throws Exception on database error.
*/
protected function index(FinderIndexerResult $item)
{
// ...
}
/**
* Method to setup the adapter before indexing.
*
* @return boolean True on success, false on failure.
*
* @since 2.5
* @throws Exception on database error.
*/
protected function setup()
{
// ...
}
}
_
onFinder...()
メソッドを実装することもできます。