如何渲染页面模块

时间:2015-05-13 10:00:29

标签: typo3 backend extbase typo3-6.2.x typo3-extensions

我已经使用一些FE插件开发了TYPO3(6.2)扩展。

我需要更改有关插件的信息,该信息显示在页面视图的后端。

现在只显示插件的标题和名称......

我使用flexforms配置插件,我想在后端的插件“占位符”上显示一些配置。

我记得,几年前我读了一些如何做的文档,但我再也找不到了......

有谁知道正确的方法吗?

1 个答案:

答案 0 :(得分:3)

如果我理解得很好,你就要求ContentElement预览。您需要使用cms/layout/class.tx_cms_layout.php挂钩here's quite nice gist

只有两个补充:

  1. 不要使用t3lib_extMgm类,因为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';
    
  2. 根据您如何注册插件(未提及),您还需要检查$row['list_type'],因为$row['CType']可能只是通用list。< / p>

  3. 具有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'] . '&amp;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;
            }
        }
    }