ichaber / silverstripe-swiftype
使用Swiftype搜索与Silverstripe
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- silverstripe/cms: ^5
Requires (Dev)
README
安装
使用Composer安装
composer require ichaber/silverstripe-swiftype
另请参阅 配置。扩展和配置不会自动应用。
文档
提供配置Swiftype集成代码所需的代码,以及向网站代码中添加元数据标签,以便Swiftype爬虫可以对其进行索引。
代码还提供了一个扩展,在SilverStripe CMS管理区域中发布/取消发布页面后,会触发重新索引。
它是如何工作的?
元数据标签
有一些标准的SwiftypeMetaTag
类。每个类都代表一个标准的SilverStripe SiteTree字段或方法,并将用于输出单个元数据标签到您的标记中。
以下是标准类,以及它们代表的SiteTree字段/方法
- SwiftypeMetaTagDescription (
MetaDescription
字段) - SwiftypeMetaTagPublishedAt (
LastEdited
字段) - SwiftypeMetaTagTitle (
Title
字段) - SwiftypeMetaTagURL (
Link()
方法)
此外,还有一个robots类,可以在您的SiteTree记录的ShowInSearch
设置为0
时输出noindex
和/或nofollow
(可配置)。默认情况下,这只会渲染noidex
,但您可以更新其配置以也渲染nofollow
。
- SwiftypeMetaTagRobots
模板化
如果您使用的是开箱即用的功能(请参阅配置),那么在您的模板中,您可以直接使用$SwiftypeMetaTags
来输出您在安装过程中设置的元数据标签。
爬虫
如果您使用的是开箱即用的功能(请参阅配置),那么在您发布页面时,将向Swiftype发送请求以爬取该页面。
配置
简单
如果您只想即插即用,那么应用以下三个扩展。
SilverStripe\SiteConfig\SiteConfig: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeSiteConfigFieldsExtension SilverStripe\CMS\Model\SiteTree: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeSiteTreeCrawlerExtension - Ichaber\SSSwiftype\Extensions\SwiftypeMetaTagContentExtension
这将为您提供以下内容
- 用于添加您的Swiftype凭据的标准CMS字段。
- 一个模板变量(
$SwiftypeMetaTags
)用于输出您的元数据标签。 - 在SiteTree发布时的重新索引请求到Swiftype。
然后您需要指定您要使用的元数据标签。您可以通过两种方式完成此操作。
在config yaml中
App\Page\MyPage: swiftype_meta_tag_classes: - Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagDescription - Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagPublishedAt - Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagRobots - Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagTitle - Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagURL
或在自己的模型中
class MyPage extends SiteTree { /** * @var array */ private static $swiftype_meta_tag_classes = [ SwiftypeMetaTagDescription::class, SwiftypeMetaTagPublishedAt::class, SwiftypeMetaTagRobots::class, SwiftypeMetaTagTitle::class, SwiftypeMetaTagURL::class, ]; }
这两种方法都可以为您提供良好的控制,如果您有不同的页面类型需要不同的元数据标签。
关于robots类的简短说明
Swiftype使用标准的<meta name="robots" content="noindex">
元数据标签,因此如果您已经通过其他方式输出此标签,那么您将想要在这里排除它。另请参阅[自定义robots元数据标签](#Customising the robots Meta Tag)
逐个组件
要使用标准的SiteConfig CMS字段,您可以将SwiftypeSiteConfigFieldsExtension
应用于您的SiteConfig
。这将为您提供一些基本选项来为您的站点设置单个引擎。
目前对单个站点上的多个引擎的支持有限 - 如果您需要此功能,您可能需要添加自己的实现。
SilverStripe\SiteConfig\SiteConfig: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeSiteConfigFieldsExtension
如果您正在使用Swiftype爬虫,并希望在页面取消发布或发布后添加“重新爬取”操作,您可以应用SwiftypeSiteTreeCrawlerExtension
到SiteTree
(或您选择的另一个模型)。
SilverStripe\CMS\Model\SiteTree: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeSiteTreeCrawlerExtension
如果您希望SiteTree能够访问标准模板变量,则应用以下扩展。
SilverStripe\CMS\Model\SiteTree: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeMetaTagContentExtension
索引文件
如果您正在使用Swiftype爬虫,并希望在文件取消发布或发布后添加“重新爬取”操作,您可以应用SwiftypeFileCrawlerExtension
到File
(或您选择的另一个模型)。
SilverStripe\CMS\Model\File: extensions: - Ichaber\SSSwiftype\Extensions\SwiftypeFileCrawlerExtension
还有一个配置允许某些文件类型被索引/重新索引。
Ichaber\SSSwiftype\Extensions\SwiftypeFileCrawlerExtension: reindex_allowed_extensions: - pdf
注意:默认情况下,此配置不会设置任何要索引的扩展。
索引自定义DataObjects
如果您想索引自己的自定义DataObjects,只需通过扩展创建自己的爬虫扩展
添加自己的元标签
您可以将自己的类轻松添加到对象中(见安装)。
您添加的任何类都应实现SwiftypeMetaTagInterface
,但这就足够了。
如果您想访问如generateMetaTagsString()
这样的方法,也可以自由扩展SwiftypeMetaTag
。
自定义robots Meta Tag
对于robots Meta Tag有两个配置可用。这些配置允许您控制是否添加noindex
和/或nofollow
。默认情况下,添加了noindex
,但我们允许机器人跟踪。
Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagRobots:
no_index: true
no_follow: false
您可以通过添加自己的配置来覆盖这些配置。例如:添加noidex
和nofollow
。
--- Name: app_swiftype_tags After: swiftype_tags --- Ichaber\SSSwiftype\MetaTags\SwiftypeMetaTagRobots: no_index: true no_follow: true
要求
- PHP 7.1或更高版本
- SilverStripe框架4.x
- SilverStripe CMS 4.x