You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:TYPO3 v12中ke_search v5.1.2无法索引Bootstrap_package手风琴元素

ke_search v5.1.2 无法索引Bootstrap_package手风琴内容元素的解决方案

以下是几种可行的解决方案:

1. 自定义索引钩子(Hook)

通过实现ke_search的索引钩子,手动解析手风琴内容元素并添加到索引中:

  • 创建自定义扩展(或复用现有扩展),添加钩子类:
<?php
namespace Vendor\YourExtension\Hooks;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TKGM\KeSearch\Indexer\Indexer;

class AccordionIndexProcessor
{
    public function postProcessPageIndexer(&$params, Indexer $indexer)
    {
        $pageUid = (int)$params['page']['uid'];
        $cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
        
        // 查询当前页面下的所有手风琴内容元素
        $accordionRecords = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
            'uid, pi_flexform',
            'tt_content',
            'CType = "bootstrap_package_accordion" AND pid = ' . $pageUid
        );

        foreach ($accordionRecords as $record) {
            // 解析FlexForm获取手风琴面板数据
            $flexformData = GeneralUtility::xml2array($record['pi_flexform']);
            $tabs = $flexformData['data']['sDEF']['lDEF']['tabs']['vDEF'] ?? [];
            
            foreach ($tabs as $tab) {
                // 渲染并解析RTE内容
                $renderedContent = $cObj->cObjGetSingle('TEXT', [
                    'value' => $tab['content'],
                    'parseFunc.' => $GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']
                ]);
                // 提取纯文本并添加到索引
                $plainText = strip_tags($renderedContent);
                if (!empty(trim($plainText))) {
                    $indexer->addWordEntry(
                        $plainText,
                        $pageUid,
                        $params['page']['title'],
                        $params['page']['url'],
                        $record['uid'],
                        'tt_content',
                        $params['page']['sys_language_uid'],
                        '',
                        '',
                        $params['page']['crdate']
                    );
                }
            }
        }
    }
}
  • 在扩展的ext_localconf.php中注册钩子:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ke_search']['postProcessPageIndexer'][] = 
    \Vendor\YourExtension\Hooks\AccordionIndexProcessor::class;
  • 重新执行ke_search的全量索引,手风琴内容即可被收录。

2. 配置内容元素索引规则

尝试通过TypoScript配置让ke_search识别手风琴内容元素:

plugin.tx_kesearch.settings.indexer.types.pages {
    contentElementTypes {
        bootstrap_package_accordion = 1
    }
}

注意:此方法仅在ke_search支持自动解析该内容元素的FlexForm结构时生效,若配置后无效果,请优先使用钩子方案。

3. 升级扩展版本

检查ke_search(≥v5.2.0)和bootstrap_package的最新稳定版,确认官方是否已修复该索引问题。若有可用更新,备份数据后升级对应扩展,再重新执行索引。

内容的提问来源于stack exchange,提问作者Mohamed Masmoudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:12:54