如何呈现页面模块中显示的 FE 插件的预览
How can I render preview of FE plugin diplayed in Page module
我用一些 FE 插件开发了 TYPO3 (6.2) 扩展。
我需要更改有关插件的信息,该信息显示在页面视图的后端。
现在只显示标题和插件名称...
我已经使用 flexforms 来配置插件,我想在后端显示插件的一些配置 "placeholder"。
我记得,几年前我读过一些如何做的文档,但我找不到了...
有谁知道正确的做法吗?
如果我理解得很好,您是在请求 ContentElement 预览。你需要为此使用 cms/layout/class.tx_cms_layout.php
钩子,here's quite nice gist
只增加了两个:
不要使用 t3lib_extMgm
class 它已被删除,因为 7.x 您可以通过以下方式注册此挂钩:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem'][$_EXTKEY]
= 'EXT:your_ext/Classes/Hooks/PageLayoutView.php:\Vendor\YourExt\Hooks\PageLayoutView';
根据您注册插件的方式(未提及),您可能还需要检查 $row['list_type']
,因为您的 $row['CType']
可能只是通用的 list
.
示例 class 具有来自 FlexForm 字段的值
<?php
namespace Vendor\YourExt\Hooks;
class PageLayoutView implements \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface {
public function preProcess(\TYPO3\CMS\Backend\View\PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row) {
if ($row['CType'] == 'list' && $row['list_type'] == 'yourext_yourplugin') {
$drawItem = false;
$linkStart = '<a href="#" onclick="window.location.href=\'../../../alt_doc.php?returnUrl=%2Ftypo3%2Fsysext%2Fcms%2Flayout%2Fdb_layout.php%3Fid%3D' . $row['pid'] . '&edit[tt_content][' . $row['uid'] . ']=edit\'; return false;" title="Edit">';
$linkEnd = '</a>';
$headerContent =
$linkStart .
"<strong>Selected slides</strong>" .
$linkEnd;
$ffXml = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($row['pi_flexform']);
$itemContent =
$linkStart .
$ffXml['data']['sDEF']['lDEF']['settings.myFlexField']['vDEF'] .
$linkEnd;
}
}
}
我用一些 FE 插件开发了 TYPO3 (6.2) 扩展。
我需要更改有关插件的信息,该信息显示在页面视图的后端。
现在只显示标题和插件名称...
我已经使用 flexforms 来配置插件,我想在后端显示插件的一些配置 "placeholder"。
我记得,几年前我读过一些如何做的文档,但我找不到了...
有谁知道正确的做法吗?
如果我理解得很好,您是在请求 ContentElement 预览。你需要为此使用 cms/layout/class.tx_cms_layout.php
钩子,here's quite nice gist
只增加了两个:
不要使用
t3lib_extMgm
class 它已被删除,因为 7.x 您可以通过以下方式注册此挂钩:$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem'][$_EXTKEY] = 'EXT:your_ext/Classes/Hooks/PageLayoutView.php:\Vendor\YourExt\Hooks\PageLayoutView';
根据您注册插件的方式(未提及),您可能还需要检查
$row['list_type']
,因为您的$row['CType']
可能只是通用的list
.
示例 class 具有来自 FlexForm 字段的值
<?php
namespace Vendor\YourExt\Hooks;
class PageLayoutView implements \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface {
public function preProcess(\TYPO3\CMS\Backend\View\PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row) {
if ($row['CType'] == 'list' && $row['list_type'] == 'yourext_yourplugin') {
$drawItem = false;
$linkStart = '<a href="#" onclick="window.location.href=\'../../../alt_doc.php?returnUrl=%2Ftypo3%2Fsysext%2Fcms%2Flayout%2Fdb_layout.php%3Fid%3D' . $row['pid'] . '&edit[tt_content][' . $row['uid'] . ']=edit\'; return false;" title="Edit">';
$linkEnd = '</a>';
$headerContent =
$linkStart .
"<strong>Selected slides</strong>" .
$linkEnd;
$ffXml = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($row['pi_flexform']);
$itemContent =
$linkStart .
$ffXml['data']['sDEF']['lDEF']['settings.myFlexField']['vDEF'] .
$linkEnd;
}
}
}