首页 > 解决方案 > 在 TYPO3 8.7 中通过“插入记录”插入时显示 tt_address 记录

问题描述

我正在寻找一种方法来显示在 TYPO3 8.7 LTS 中使用“插入记录”内容元素插入的 tt_address 元素。我知道使用 css_styled_content 的方法,但我不知道如何使用 fluid_styled_content 来做到这一点。Slack 上的某个人向我指出了“记录”TS-Object,也许还有 DatabaseQueryProcessor。可悲的是,我找不到适合我用例的好的教程或文档。任何帮助将不胜感激。

标签: typo3fluidtypo3-8.x

解决方案


有两种方法

tt_address 的自定义内容元素

这是正确的方法。

您可以检查 TYPO3 本身是如何在“快捷方式”内容元素中执行此操作的,从编辑器的角度来看,该内容元素是“插入记录”。

提示是完全有效的。使用 FLUIDTEMPLATE 定义模板以呈现和添加 DatabaseQueryProcessor,如下所述:https ://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Fluidtemplate/Index.html#dataprocessing

处理器可以在源代码中找到:https ://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_8-7/typo3/sysext/frontend/Classes/DataProcessing/DatabaseQueryProcessor.php#L22 ,里面有一个示例配置PHPDoc,它已经使用了 tt_address。

这是内容元素的完整 TypoScript 示例:

tt_content.custom_content =< lib.contentElement
tt_content.custom_content {
    templateName = TtAddressRecords
    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
        10 {
            table = tt_address
            pidInList = 123
            as = addresses
        }
    }
}

使用现有的快捷方式内容元素

如果您已经在使用本机快捷方式内容元素,这应该可以通过一些配置开箱即用。它将解析选定的记录。

首先,您必须允许通过此元素呈现 tt_address 记录。因此,将以下内容添加到 TypoScript 常量:

styles {
    content {
        shortcut {
            tables := addToList(tt_address)
        }
    }
}

这会将 tt_address 添加到现有的 tt_content 表中。

接下来,您需要 tt_address 记录的呈现定义。这是在 TypoScript 设置中完成的。例如,将以下 TypoScript 添加到设置中并根据需要调整路径:

tt_address < lib.contentElement
tt_address {
    templateName = TtAddress
    templateRootPaths {
        10 = EXT:cdx_site/Resources/Private/Templates/Plugins/
    }
}

上面的示例将使用流体模板cdx_site/Resources/Private/Templates/Plugins/TtAddress.html来呈现每个单独的 tt_address 记录。

不需要调整 Shortcut.html 模板,因为它只会显示渲染的记录。


推荐阅读