php - 如何自动编辑页面配置并从扩展控制器添加模板?
问题描述
我正在编写一个自动创建页面的 Extbase 扩展。到目前为止,我已经设法添加了页面,并且它们显示在页面树中。我还将他们的页面 ID 保存在变量中。
$data = array(
'pages' => array(
'NEW_1' => array(
'pid' => '-1',
'title' => 'Page1',
),
'NEW_2' => array(
'pid' => 'NEW_1',
'title' => 'Page2',
),
'NEW_3' => array(
'pid' => 'NEW_1',
'title' => 'Page3',
),
'NEW_4' => array(
'pid' => 'NEW_1',
'title' => 'Page4',
),
)
);
$tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\DataHandling\\DataHandler');
$tce->stripslashes_values = 0;
$dataHandler->reverseOrder = 0;
$tce->start($data, []);
$tce->process_datamap();
\TYPO3\CMS\Backend\Utility\BackendUtility::setUpdateSignal('updatePageTree');
$tce->clear_cacheCmd('pages');
$Page1id=$tce->substNEWwithIDs['NEW_1'];
$Page2id=$tce->substNEWwithIDs['NEW_2'];
$Page3id=$tce->substNEWwithIDs['NEW_3'];
$Page4id=$tce->substNEWwithIDs['NEW_4'];
现在我想自动向这些页面添加一个流体模板,但如果不在后端手动添加一个,我无法弄清楚如何做到这一点。有人知道该怎么做吗?预先感谢您的帮助。
解决方案
由于流体模板不会立即分配给页面,因此您需要设置选择模板的布局。pages
一条记录中有多个字段。最常见的字段可能是backend_layout
和backend_layout_next_level
。您也可以使用该字段pagelayout
,但我更喜欢backend_layout
它,因为它有一个很好的继承模式,您可以在其中除了单页。可以在网上或StackOverflow 上找到解决方案。
如果使用这些字段之一选择您的流体模板,您可以在创建新记录时像设置任何其他字段一样设置此字段。
$data = array(
'pages' => array(
'NEW_1' => array(
'pid' => '-1',
'title' => 'Page1',
'backend_layout' => 'SpecialPageLayout',
),
'NEW_2' => array(
'pid' => 'NEW_1',
'title' => 'Page2',
'backend_layout' => 'SpecialPageLayout',
),
:
推荐阅读
- c - 如何在c中打印数据包的全部数据?
- javascript - 从 Javascript 中的数字 1-100 中溺水
- javascript - js:x++ 行为在赋值上有所不同?
- excel - 根据另一列中的日期创建序列(excel)
- python - 如果同一行中包含重复值,则删除该行
- javascript - 带有 Product_Id 的 Paypal 结帐
- java - 端口转发 - 服务器响应远程 Java 请求,通过本地浏览器响应,无法在远程浏览器中访问
- python - 仅当单词前后有空格时,如何替换单词?
- excel - 为什么 Worksheet.Cells 函数的返回类型会随着赋值变量而改变?
- javascript - 单击时将焦点转移到手风琴元素