TYPO3 route增强版在后缀页上带有后缀'.html'

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

如果routeEnhancercers配置为后缀“ .html”,是否仍然没有像'www.mysite.com'这样的基本URL?

我认为这应该是一个基本功能,但我找不到任何解决方案。重定向首页链接不是一种选择,因为规范人员仍指向错误的URL(www.mysite.com/index.html)

有什么解决方法吗?

我的配置如下:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: '.html'
    index: index
    map:
      .html: 0
typo3 url-routing slug typo3-9.x
1个回答
0
投票

reported issue on forge.typo3.org仍处于打开状态(截至2019年9月)。>>

对于时间流逝,您可以提供自定义PageType装饰器

,以获得所需的结果。报告此问题的开发人员请张贴此源代码。

/类别/路由/增强/ CustomPageTypeDecorator.php
<?php

namespace Brand\Extensionname\Classes\Routing\Enhancer;

use TYPO3\CMS\Core\Routing\Enhancer\PageTypeDecorator;
use TYPO3\CMS\Core\Routing\RouteCollection;

/**
 * Class CustomPageTypeDecorator
 */
class CustomPageTypeDecorator extends PageTypeDecorator
{
    public const IGNORE_INDEX = [
        '/index.html',
        '/index/',
    ];

    public const ROUTE_PATH_DELIMITERS = ['.', '-', '_', '/'];

    /**
     * @param \TYPO3\CMS\Core\Routing\RouteCollection $collection
     * @param array $parameters
     */
    public function decorateForGeneration(RouteCollection $collection, array $parameters): void
    {
        parent::decorateForGeneration($collection, $parameters);

        /**
         * @var string $routeName
         * @var \TYPO3\CMS\Core\Routing\Route $route
         */
        foreach ($collection->all() as $routeName => $route) {
            $path = $route->getPath();

            if (true === \in_array($path, self::IGNORE_INDEX, true)) {
                $route->setPath('/');
            }
        }
    }
}

ext_localconf.php
<?php
defined('TYPO3_MODE') or die();

// Register custom PageTypeDecorator:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers'] += ['CustomPageType' => \Brand\Extensionname\Classes\Routing\Enhancer\CustomPageTypeDecorator::class];

将其添加到模板扩展中,调整PHP命名空间(\Brand\Extensionname\),然后就完成了。

config.yaml
PageTypeSuffix:
  type: CustomPageType
  default: '.html'
  index: 'index'
  map:
    '.html': 0


推荐问答