TYPO3.CMS 9 LTS-可缓存的extbase操作,但没有带有新路由的cHash

问题描述 投票:0回答:2

任何想法如何解决这个问题?我有一个extbase插件,它具有一个列表和一个show动作。两者都应该是可缓存的,并且详细链接不应包含缓存哈希值

我无法实现。一旦启用缓存,对于细节操作我总是会得到相同的结果。

我将插件配置为可缓存:

// add detail plugin
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Vendor.Extension',
    'SomePiName',
    [
        'ControllerName' => 'show',
    ],
    [],
    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT
);

路由配置:

routeEnhancers:
  MyEnhanceName:
    type: Extbase
    extension: Extension
    plugin: SomePiName
    routes:
      - { routePath: '/{localized_entry}/{slug}', _controller: 'ControllerName::show', _arguments: {'slug': 'uuid'} }
    defaultController: 'ControllerName::show'
    aspects:
      localized_entry:
        type: LocaleModifier
        default: 'show'
        localeMap:
          - locale: 'de_DE.*|de_AT.*|de_CH.*'
            value: 'detail'
          - locale: 'it_IT.*'
            value: 'dettaglio'
      slug:
        type: customType

我的自定义方面通过将外部uuid映射到存储在我维护的mysql表中的已生成块中来工作。

我想要类似的深层链接:

/path/to/page/show/here-comes-the-slug

但是我知道

/path/to/page/show/here-comes-the-slug?cHash=...

所以我加了:

$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = "tx_extension_somepiname[uuid]";
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = "tx_extension_somepiname[controller]";
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = "tx_extension_somepiname[action]";

现在链接看起来像:

/path/to/page/show/here-comes-the-slug

但是一旦我激活缓存,我总是得到相同的结果。

所以我需要缓存哈希计算,但是我不希望在链接中使用该函数...

使用ContentObjectRenderer-> typolink_URL和配置生成链接:

[
    "parameter" => "t3://myhandler?uuid=someuuid"
]

该处理程序将使用配置转换为对ContentObjectRenderer-> typolink_URL的后续调用:

[
    "parameter" => "t3://page?uid=someconfiguredpageuid",
    "useCacheHash" => 0,
    "additionalParams" => "&tx_extension_somepiname[uuid]=uuid&tx_extension_somepiname[controller]=Controller&tx_extension_somepiname[action]=show"
]

所以我的情况是,我可以同时拥有cacheHash和正确的结果,或者也不能拥有具有无效结果的cacheHash。

这是怎么做的?

php typo3 url-routing typo3-9.x
2个回答
1
投票

您不应排除实际上将页面内容与cHash生成区分开的参数。与fbclid等外部跟踪参数一起使用时,它们确实是明智的选择。

如果您依赖缓存,也不要使用useCacheHash = 0。

而是配置路由增强器以删除?cHash


0
投票

好,我解决了这个问题,这里是必要的步骤:

© www.soinside.com 2019 - 2024. All rights reserved.