sourcebroker/singleview

允许在不同于列表视图的页面上显示单个视图,同时保持URL对用户和SEO友好

安装次数: 9,624

依赖: 0

建议者: 0

安全: 0

星级: 4

关注者: 4

分支: 2

开放问题: 1

类型:typo3-cms-extension

4.0.0 2024-07-11 12:31 UTC

This package is auto-updated.

Last update: 2024-09-11 12:59:32 UTC


README

https://poser.pugx.org/sourcebroker/singleview/v/stable https://poser.pugx.org/sourcebroker/singleview/license

它做什么?

此扩展允许在不同于列表视图的页面上显示单个视图,同时保持URL对用户和SEO友好。

查看下面的示例以更好地理解。

让我们以以下列表视图URL为例

https://www.example.com/list/

TYPO3默认情况下,当你在不同的页面上放置单个视图时,没有简单的方法从slugified URL中删除它。你会得到如下内容(单个视图位于名为“detail”的单独页面上)

https://www.example.com/list/detail/title-of-single-item/

如果你使用ext:singleview,则可以将单个视图放置在不同于列表视图的页面上,但slugified URL仍然看起来不错,如下所示 - 所以没有/detail/部分。

https://www.example.com/list/title-of-single-item/

安装

使用composer

composer require sourcebroker/singleview

用法

ext:singleview的每个配置都必须使用\SourceBroker\Singleview\Service\SingleViewService::registerConfig()静态方法在您的ext_localconf.php文件中注册,如下例所示(对于ext:news)

<?php

\SourceBroker\Singleview\Service\SingleViewService::registerConfig(
    1,
    2,
    function() {
        $newsParams = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_news_pi1');
        return !empty($newsParams['news']);
    },
    ['backend_layout'],
);

registerConfig()方法的参数

  1. 第一个参数是列表视图页面的PID。
  2. 第二个参数是单个视图页面的PID。
  3. 第三个参数是返回布尔值(或布尔值条件)的闭包,需要满足在列表视图页面上显示单个页面。闭包在这里很有用,因为在ext_localconf.php级别,URL/slug尚未解码,所以\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_news_pi1')的值是空的。但是在闭包执行的地方,\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_news_pi1')将返回良好的值。
  4. 第四个参数是可选的,它是一个包含字段名称的字符串数组,这些字段将从单个页面复制到列表页面。如果你使用backend_layouts来管理你的布局,那么你可能应该将其放在那里['backend_layout']

重要!

单个视图链接应指向与列表视图相同的页面uid。

技术背景

背后的思想是使用TYPO3内置功能“从pid显示内容”,你可以在页面属性中找到它。在此扩展中,“从pid显示内容”字段的值是基于$_GET参数动态设置的。当TYPO3渲染带有列表视图的页面时,ext:singleview会检查$_GET参数是否有单个视图请求。如果是真的,则将“content_from_pid”字段设置为单个视图页面的uid。这样,带有其内容和布局的单个视图页面就会显示在列表视图页面上。

为了确保TYPO3不会为列表视图和单个视图使用同一个缓存,添加了“content_from_pid”到hashBase。你可以通过以下方式禁用此行为: $GLOBALS['TYPO3_CONF_VARS']['EXT']['EXTCONF']['singleview']['hashBaseCustomization']['enabled'] = false;

变更日志

https://github.com/sourcebroker/singleview/blob/master/CHANGELOG.rst