TYPO3移除重复og:title标签:特定页面服务端方案求助
解决TYPO3中jh_opengraphprotocol扩展导致og:title重复的问题
针对你遇到的LinkedIn仅识别第一个默认og:title的问题,服务端层面的处理才是可靠的解决方案,下面提供几个实用方案,你可以根据场景选择:
方案1:通过扩展配置禁用特定页面的默认og:title
优先推荐查看jh_opengraphprotocol的配置选项,尝试在目标页面的TypoScript配置中添加:
plugin.tx_jhopengraphprotocol.settings.title = 0
如果扩展支持该配置,就能直接阻止默认og:title标签生成,从根源避免重复。
方案2:在控制器中先清理默认标签再添加动态标签
如果仅需在特定控制器/动作中处理,可以在添加自定义动态og:title前,先移除扩展生成的默认标签:
// 获取当前已有的header数据 $existingHeaderData = $this->response->getAdditionalHeaderData(); // 用正则匹配并移除默认og:title标签(根据实际输出调整正则细节) $cleanedHeaderData = preg_replace('/<meta name="og:title" content="detail"\/?>/', '', $existingHeaderData); // 更新header数据 $this->response->setAdditionalHeaderData($cleanedHeaderData); // 添加自定义动态og:title $this->response->addAdditionalHeaderData('<meta name="og:title" content="' . $annonce->geraAdvertTitle() . '"/>');
方案3:使用TYPO3页面钩子全局处理特定页面
如果需要在多个页面或全局范围内针对特定页面处理,可通过TYPO3页面钩子实现:
- 在自定义扩展的
ext_localconf.php中注册钩子:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'][] = \YourVendor\YourExtension\Hooks\OgTitleCleanup::class . '->removeDefaultOgTitle';
- 创建钩子类
OgTitleCleanup.php:
namespace YourVendor\YourExtension\Hooks; class OgTitleCleanup { public function removeDefaultOgTitle(array $params) { $content = $params['pObj']->content; // 判断当前是否为目标页面(替换成你的页面UID或其他判断条件) if ($GLOBALS['TSFE']->id === 123) { // 移除默认og:title标签 $content = preg_replace('/<meta name="og:title" content="detail"\/?>/', '', $content); $params['pObj']->content = $content; } return $content; } }
该方案会在页面输出前拦截处理内容,确保特定页面仅保留你自定义的动态og:title标签。
内容的提问来源于stack exchange,提问作者Gazale_m
相关产品推荐
相关产品推荐

