ichaber/silverstripe-swiftype

使用Swiftype搜索与Silverstripe

安装: 18,689

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 5

分支: 5

类型:silverstripe-vendormodule

2.1.0 2023-06-29 21:24 UTC

This package is auto-updated.

Last update: 2024-08-29 23:45:59 UTC


README

Build Status Scrutinizer Code Quality codecov

安装

使用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爬虫,并希望在页面取消发布或发布后添加“重新爬取”操作,您可以应用SwiftypeSiteTreeCrawlerExtensionSiteTree(或您选择的另一个模型)。

SilverStripe\CMS\Model\SiteTree:
  extensions:
    - Ichaber\SSSwiftype\Extensions\SwiftypeSiteTreeCrawlerExtension

如果您希望SiteTree能够访问标准模板变量,则应用以下扩展。

SilverStripe\CMS\Model\SiteTree:
  extensions:
    - Ichaber\SSSwiftype\Extensions\SwiftypeMetaTagContentExtension

索引文件

如果您正在使用Swiftype爬虫,并希望在文件取消发布或发布后添加“重新爬取”操作,您可以应用SwiftypeFileCrawlerExtensionFile(或您选择的另一个模型)。

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

您可以通过添加自己的配置来覆盖这些配置。例如:添加noidexnofollow

---
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