Silverstripe サイトにニュース セクションがあり、Silverstripe の FulltextSeach 機能を使用したいと考えています。
FulltextSearchable::enable();
これまでのところうまくいきます。しかし、結果に NewsPages だけを含めたいと思います。たとえば、結果として特定の pageType のみを取得するように検索をフィルタリングする方法はありますか?
前もって感謝します、クリス
Silverstripe サイトにニュース セクションがあり、Silverstripe の FulltextSeach 機能を使用したいと考えています。
FulltextSearchable::enable();
これまでのところうまくいきます。しかし、結果に NewsPages だけを含めたいと思います。たとえば、結果として特定の pageType のみを取得するように検索をフィルタリングする方法はありますか?
前もって感謝します、クリス
これはテストされていないコードですが、sapphire/search/FulltextSearchable.phpのソース コードを確認しました。
mysite/_config.php に以下を追加できます:
FulltextSearchable::enable(array());
SiteTree (すべてのページ) と File であるデフォルトの検索済みクラスを削除する必要があります。
次に、mysite/_config.php にオブジェクト拡張を追加できます。
Object::add_extension('NewsPage', "FulltextSearchable('Title,MenuTitle,Content,MetaTitle,MetaDescription,MetaKeywords')");
以下は、FulltextSearchable.php ファイル内のコメントです。
/**
* Enable the default configuration of MySQL full-text searching on the given data classes.
* It can be used to limit the searched classes, but not to add your own classes.
* For this purpose, please use {@link Object::add_extension()} directly:
* <code>
* Object::add_extension('MyObject', "FulltextSearchable('MySearchableField,'MyOtherField')");
* </code>
*
* Caution: This is a wrapper method that should only be used in _config.php,
* and only be called once in your code.
*
* @param Array $searchableClasses The extension will be applied to all DataObject subclasses
* listed here. Default: {@link SiteTree} and {@link File}.
*/