gpt4 book ai didi

typo3 - 如何呈现页面模块中显示的 FE 插件的预览

转载 作者:行者123 更新时间:2023-12-01 23:43:32 26 4
gpt4 key购买 nike

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

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

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

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

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

有谁知道正确的做法吗?

最佳答案

如果我理解得很好,您是在请求 ContentElement 预览。为此,您需要使用 cms/layout/class.tx_cms_layout.php Hook ,here's quite nice gist

只是两个补充:

  1. 不要使用 t3lib_extMgm 类,它自 7.x 以来已被删除,您可以使用以下方法注册此 Hook :

    $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

具有来自 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;
}
}
}

关于typo3 - 如何呈现页面模块中显示的 FE 插件的预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com