TYPO3 提供程序扩展现在在页面布局选项卡中显示其页面布局

Posted

技术标签:

【中文标题】TYPO3 提供程序扩展现在在页面布局选项卡中显示其页面布局【英文标题】:TYPO3 provider extension now showing its page layouts in Page Layout tab 【发布时间】:2016-12-06 05:47:01 【问题描述】:

当我编辑页面属性并转到“页面布局”选项卡时,尝试在 TYPO3 后端的提供程序扩展中选择页面布局时遇到问题。

我的提供程序扩展覆盖在 fluidbootstraptheme 上。我以前做过,但由于某种原因,这次我不能让它工作???我的提供程序扩展的 TS 包含在我的主 TS 模板中,并且 CSS/JS 资产工作正常……只是不是模板/部分/布局。我已经仔细检查了我的路径。只是从 TYPO3 6.2 升级到 7.6 的最后一块。其他一切正常,我在其他任何地方都看不到任何错误。我真的认为这应该是一个简单的问题。

环境:升级自 -> 至

TYPO3 6.2.0 -> 7.6.10 fluidbootstraptheme 1.1.0 -> 开发(目前为 2.0.0) 通量 7.1.2 -> 7.4.0 流体页面 3.1.2 -> 3.6.0 流体内容 4.1.1 -> 4.4.1 vhs 2.2.0 -> 3.0.1

setup.txt

plugin.tx_fluidbootstraptheme.view 
    templateRootPaths.1 = $plugin.tx_someexample.view.templateRootPaths.0
    partialRootPaths.1 = $plugin.tx_someexample.view.partialRootPaths.0
    layoutRootPaths.1 = $plugin.tx_someexample.view.layoutRootPaths.0

constants.txt

plugin.tx_someexample.view 
    templateRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Templates/
    partialRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Partials/
    layoutRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Layouts/

ext_tables.php

<?php
if (!defined('TYPO3_MODE')) 
    die ('Access denied.');


TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'some_example');

ext_localconf.php

<?php
if (!defined('TYPO3_MODE')) 
    die ('Access denied.');


\FluidTYPO3\Flux\Core::registerProviderExtensionKey('some_example', 'Page');
\FluidTYPO3\Flux\Core::registerProviderExtensionKey('some_example', 'Content');

来自提供程序扩展的Layouts/WithSideBar.html

Link to Gist of Layouts/WithSideBar.html

来自fluidbootstraptheme的Templates/Page/WithSideBar.html

Link to Gist of Templates/Page/WithSideBar.html

【问题讨论】:

如果没有您的自定义扩展,选择框是否存在?看起来更像是流体页面问题/配置问题 你好@minifranske,我现在已经查看了许多打开和关闭的流体页面问题,但没有看到更多线索。为了帮助您,我现在还包含了两个WithSideBar.html 文件的要点...也许你们可以看到一些我看不到的东西,因为我不精通流体内容/通量语法。我还应该注意的是,在升级到新版本之前,它可以正常工作。 当我进行构建器流畅语法检查时,php typo3/cli_dispatch.phpsh extbase builder:fluidsyntax --extension some_example,我收到错误,Fatal error: Call to a member function get() on null in /home/example/public_html/vendor/typo3/cms/typo3/sysext/fluid/Classes/Core/Parser/TemplateParser.php on line 499 @minifranske 我删除了 some_example 静态模板,页面布局选项卡看起来相同。当我再次包含 some_example 静态模板时,似乎应该有一个额外的选项,就像以前一样,所以我可以从 some_example 扩展中选择页面布局。我应该怎么做才能解决这个问题??? 【参考方案1】:

您可能希望为plugin.tx_fluidbootstraptheme.view 中的叠加层选择大于 10 的模板路径索引值。 Flux(以及因此 FluxPages)中的默认值是 0 或 10,具体取决于您使用的版本 - 选择大于 10 的值可以避免由此产生的任何问题。

【讨论】:

谢谢克劳斯......我只是在很长一段时间后跟进并说你是正确的。所有最近的版本现在都以 0 开头,所以要添加额外的叠加层,从 1 开始应该没问题。【参考方案2】:

这是页面布局不起作用的原因......无法解释原因,但这解决了问题。 我很乐意在这里修改答案,有人可以详细说明原因。

解决方案:确保您的覆盖文件没有隐藏在子目录中。只要我将 TemplatesLayoutsPartials 文件夹直接子目录添加到提供程序扩展,它就可以工作了。

而不是这个...

constants.txt(原文)

plugin.tx_someexample.view 
    templateRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Templates/
    partialRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Partials/
    layoutRootPaths.0 = EXT:some_example/Resources/Private/Ext/Fluidbootstraptheme/Layouts/

...把文件所在的路径改成这个...

constants.txt(修改过的 Templates、Partials 和 Layouts 文件夹位置)

plugin.tx_someexample.view 
    templateRootPaths.0 = EXT:some_example/Resources/Private/Templates/
    partialRootPaths.0 = EXT:some_example/Resources/Private/Partials/
    layoutRootPaths.0 = EXT:some_example/Resources/Private/Layouts/

现在覆盖文件暂时可以工作了。

【讨论】:

以上是关于TYPO3 提供程序扩展现在在页面布局选项卡中显示其页面布局的主要内容,如果未能解决你的问题,请参考以下文章

从 TYPO3 v9 升级到 v10 后:显示页面不再工作(无法访问受保护的财产)

在 TYPO3 后端的页面视图中显示列表

如何使用Selenium在页面中的多个子选项卡中传递驱动程序实例?

在 facebook 页面的选项卡中查看 facebook 应用程序时不显示任何内容

在标签布局中看不到我的cardView

TYPO3:页面+子页面上的登录表单