从扩展添加TYPO3后端布局


Adding TYPO3 backend layout from an extension

我正在为TYPO3版本7开发一个模板。在后端,我创建了几个后端布局。在setup.ts中的模板(扩展)中,我检查后端布局的ID,以提供正确的fluidtemplate。

为了更容易地使用模板,我想直接通过扩展提供后端布局。如何直接从扩展添加后端布局?如何获取或设置后端布局的id?所以我可以在setup.ts中映射它?

我通常将后端布局存储在文件夹中以构建扩展。

  • BackendLayouts/所有后端布局都保存在其中
  • BackendLayouts.ts这是布局组合在一起的地方(<INCLUDE_TYPOSCRIPT: source="Path/To/Backendlayout">

图片:示例结构的屏幕截图

布局设置

BE布局的基本设置如下所示:

mod.web_layout.BackendLayouts{
    exampleKey {
        title = Example
        config{
            # Here you paste the generated BE-Layout
        }
    }
}

例如(Default.ts):

mod.web_layout.BackendLayouts{
    default{
        title = Default
        config{
            backend_layout {
                colCount = 2
                rowCount = 2
                rows {
                    1 {
                        columns {
                            1 {
                                name = Slider
                                colspan = 2
                                colPos = 1
                            }
                        }
                    }
                    2 {
                        columns {
                            1 {
                                name = Sidebar
                                colPos = 2
                            }
                            2 {
                                name = Content
                                colPos = 0
                            }
                        }
                    }
                }
            }
        }
    }
}

最后你需要注册你的页面配置:

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

  'TYPO3'CMS'Core'Utility'ExtensionManagementUtility::registerPageTSConfigFile(
          'test_ext',
          'Configuration/TypoScript/Backend/BackendLayouts.ts',
          'My special Backend Layouts'
  );
?>

这只适用于Typo3 v7.4.x和更高版本的

Typo3后端

  1. 清除缓存并重新加载后端
  2. 转到根页面并进行编辑
  3. 转到"资源"选项卡并添加您的TypoScript配置
  4. 保存,重新加载页面

现在,当您编辑页面时,您应该能够看到添加的后端布局。

进一步行动

如果你想为每个BE布局使用不同的模板,你可以简单地通过FLUIDTEMPLATE设置中的"templateName"部分来完成,如你在这里看到的:官方TypoScript参考,#templateName

您可以提供一个类来实现后端布局的DataProviderInterface。然后,您必须在密钥下注册该类

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['BackendLayoutDataProvider'][$_EXTKEY] = 'Fully''Qualified''Namespace''Of''The''Class';

这是可能的,因为TYPO3 6.2。

更多参考:

  • Gerrit的变化
  • 锻造中的Diskussion(相当长)
  • 示例扩展