itzbund/gsb-solr

GSB solr。这是政府网站建设(GSB)11的一部分。GSB 11是德国联邦内政部和家乡部(BMI)服务整合联邦(DKB)的措施,并由联邦信息技术中心(ITZBund)负责执行。

v1.7.0-rc.15 2024-09-28 04:14 UTC

README

TYPO3 12

GSB 11 扩展 gsb_solr

关于

扩展 gsb_solr 扩展标准 solr 扩展,使其在 gsb11 的上下文中工作。

它提供了一个自定义的 PageIndexerRequest 对象,不使用外部 http 请求来填充 solr 索引。这是由于托管环境的限制所必需的。此外,TitleTagSearchViewHelper 将搜索词添加到标题标签中。

了解更多关于 GSB 11 的信息.

安装

安装此扩展的最佳方式是从 GSB 网站包启动器扩展 开始。

无需 GSB 网站包启动器的快速安装

在基于 composer 的 TYPO3 安装中,您可以通过 composer 安装扩展 EXT:gsb_solr。

composer config -g gitlab-domains gitlab.opencode.de && \
composer config -g repositories.gsb-solr vcs https://gitlab.opencode.de/bmi/government-site-builder-11/extensions/gsb_solr.git
composer require itzbund/gsb-solr

配置

Typoscript: allowedSites

要设置具有合理默认值的 TypoScript 配置,请在您的网站根模板记录中包含 GSB Solr Package TypoScript 记录,或激活 ITZBUNDPHP-3878 功能标志。

如果您的网站在后台和前端使用不同的域名进行托管,最好将前端域名明确添加到根 plugin.tx_solr.search.query.allowedSite Typoscript 配置中,例如。

plugin.tx_solr.search.query.allowedSites = frontend.domain.de

否则,如果为 frontend.domain.de 索引,则索引将不可用于后台域的用户。这是由于 EXT:solr 的 siteHash 机制和默认值 __current_site 导致的。如果您同时添加后台和前端域,您可能会看到重复的结果,具体取决于索引的触发方式(后台 vs cli/task)。

⚠️ 警告:如果配置了不正确的 allowedSites,solr 可能会表现出异常:您可能看不到任何搜索结果,或者当内容更改时搜索结果不会更改。您不能从后台删除 solr 服务器上的任何索引,除了(主要)前端域的索引。

计划任务

为了在 TYPO3 中正确地使用 solr,您需要设置至少一个计划任务(索引队列工作器和强制重新索引网站)。

请参阅 solr 计划任务文档

⚠️ 警告:工作器应仅配置为在每次运行中索引 5-10 个文档。这是由于我们的索引器需要大量的内存,因为所有内容都在同一请求上下文中处理。

扩展配置:索引器模式

此扩展提供了三种索引器模式,可以在扩展设置中进行配置

⚠️ 注意:在只读系统上,这只能通过环境变量进行配置

索引器模式描述
use_internal_subrequests在 GSB11 上下文中的默认值:使用大量内存,因为从不使用真正的 HTTP 请求。相反,使用子请求,类似于 TYPO3 核心的错误处理器。
use_self_with_host_header类似于“默认”实现,但不使用DNS解析,始终指向127.0.0.1。在受限环境中有一些优点,因为DNS可能会不稳定;只有当当前系统(通常是CLI)也运行了Web服务器时(它可能没有运行)才会工作。
默认默认的EXT:solr实现

用法

无需操作。

gsb_solr中的功能标志

本文档解释了如何使用功能标志。功能标志允许您在安装中启用或禁用特定功能。对于不使用未通过审批流程的功能来说,这一点尤为重要。

配置

功能标志配置在ddev机器上的.envlocal-dev/.ddev/docker-compose.environment.yaml文件中。要添加功能标志,使用以下语法

# Feature flag for the specific tickets. Set them to true to activate the features.
- TYPO3__SYS__features__ITZBUNDPHP-749=%const(bool:true)%

在此示例中,功能标志ITZBUNDPHP-749设置为true。要禁用功能,将值更改为false或删除设置。

功能标志真值表

此表说明了功能标志在不同状态下的行为。

功能标志状态评估值描述
featureFlag = truetrue功能被显式启用。
featureFlag = falsefalse功能被显式禁用。
featureFlag = ''false空值被视为false
featureFlag不存在false不存在的标志默认为false

gsb_core当前的功能标志

功能标志描述
ITZBUNDPHP-749启用搜索输入字段的自动建议功能
ITZBUNDPHP-3878自动配置allowedSites

在PHP代码中的使用

要在您的PHP代码中使用功能标志,您可以在全局TYPO3配置中检查标志的值。以下是一个示例

if (GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('ITZBUNDPHP-749')) {
    // Only if the feature flag is set to true the feature is activated
    // Feature-specific code goes here
}

在此示例中,只有当功能标志ITZBUNDPHP-749设置为true时,功能特定的代码才会执行。

在Fluid模板中的使用

您还可以使用自定义ViewHelper在您的Fluid模板中使用功能标志。首先,确保您包含了ViewHelper的命名空间

{namespace gsb=ITZBund\GsbCore\ViewHelpers}

然后,使用featureFlag ViewHelper根据功能标志条件性地渲染内容

<f:if condition="{gsb:featureFlag(featureKey: 'ITZBUNDPHP-749')}">
    <!-- Feature-specific content goes here -->
</f:if>

在此示例中,如果功能标志ITZBUNDPHP-749未设置为false,则<f:if>标签内的内容将始终被渲染。

进一步阅读

有关TYPO3中功能标志的更多信息,请参阅TYPO3功能标志文档

贡献

与TYPO3一样,我们鼓励您通过提交更改来加入项目。GSB 11的开发主要发生在GSB 11 TYPO3扩展仓库中。

要开始,请查看我们的详细的贡献指南