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.1setup.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】:这是页面布局不起作用的原因......无法解释原因,但这解决了问题。 我很乐意在这里修改答案,有人可以详细说明原因。
解决方案:确保您的覆盖文件没有隐藏在子目录中。只要我将 Templates
、Layouts
和 Partials
文件夹直接子目录添加到提供程序扩展,它就可以工作了。
而不是这个...
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 后:显示页面不再工作(无法访问受保护的财产)
如何使用Selenium在页面中的多个子选项卡中传递驱动程序实例?