【问题标题】:Why does this pibase extension not get loaded?为什么这个 pibase 扩展没有被加载?
【发布时间】:2019-05-15 13:17:46
【问题描述】:

我正在从 TYPO3 更新一个项目

  • 6.x 到 7.x
  • 7.x 到 8.7

我已经在 8.7 上,现在正在开发扩展。我们有一个 pibase 扩展,在 8.7 中应该仍然提供支持

我已经重构了一些东西:

  • 我用基于 ClassAliasMap.php 的新命名空间替换了旧类
  • 我已通过 Configuration/TCA/Overrides 调整了新的 TCA 方法
  • 从 $TCA 更改为 $GLOBALS['TCA']

另一项任务是将模板从 css_styled_content 改写为 fluid_styled_content。但我不在那里,因为我坚持让插件在模板>根页面>信息/修改>编辑-整体-模板>包含中可用。它只是不在“可用项目”列表中。

我认为有两个步骤可以完成此操作

为前端渲染注册插件

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPItoST43($_EXTKEY, 'pi1/class.tx_rxextkey_pi1.php', '_pi1', 'list_type', FALSE);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPItoST43($_EXTKEY, 'pi2/class.tx_rxextkey_pi2.php', '_pi1', 'list_type', FALSE);

并使插件在后端可选择

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
array('LLL:EXT:rx_extkey/Resources/Private/Language/locallang_db.xml:tt_content.list_type_pi1',
     'rx_extkey_pi1',
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('rx_extkey') . 'ext_icon.png'
     ),
     'list_type',
     'rx_extkey'
    );

扩展程序/插件的一般结构如下:

myextension
- configuration/
  - TCA/
   - Overrides/
     tt_content.php
- doc/
  wizard_form.dat
  wizard_form.html
- eId/
  classX.php
  classO.php
  classL.php
- pi1/
  class.tx_myextension_pi1.php
  flexform_ds.xml
  locallang.xml
- pi2/
  class.tx_myextension_pi1.php
  flexform_ds.xml
  locallang.xml
- res/
  something.html
  somethingelse.html
ext_emconf.php
ext_icon.gif
ext_localconf.php
ext_tables.php
locallang_db.xml

所以在 ext_localconf 中,我从 ExtensionManagementUtility 调用 addPItoST43 来实际添加类文件

emconf 只是“默认”,可以说是插件的描述

文件 ext_tables.php 现在是空的,因为里面的所有东西都移到了 Configuration/ 部分

我移至 Configuration/ 目录中的 tt_content.php 的部分包含 2 个 TCA 覆盖,带有 $GLOBALS['TCA']['tt_content']['types'] 和 $GLOBALS['TCA']['tt_content' ]['columns'] 后跟来自 ExtensionManagementUtility 的 3 个 addPlugin 调用

所以完成所有这些后,我仍然无法在根页面中包含插件以获得实际功能 - 我不知道如何进一步处理以使其工作 - 如果有任何进一步的信息或代码,非常感谢任何帮助需要的只是发表评论

进一步调查: 所以我已经像扩展的每个部分一样进行了调试,后端的部分似乎工作得很好,我看到了插件内容,并且可以从数据库中选择部分以理论上显示在前端。唯一的问题是 TYPO3 从未进入我的类 tx_extkey_pi1 以实际用内容填充模板 - 我在 main() 和 renderTemplate() 中都有带有 exit() 的 var_dumps() 但它们从未被触发。

【问题讨论】:

  • TypoScript 在您的结构中的什么位置?
  • @ThomasLöffler 在插件/扩展结构中没有特定的 TypoScript - 我们在 fileadmin/templates/ts 有一堆
  • 通过 TypoScript 调用插件。当它没有被调用时,它就没有运行。
  • 如果我已经能够选择它作为页面的内容类型,也是这种情况吗?我想我必须仔细检查是否有错字?
  • @ThomasLöffler 不知道与 ext_localconf 中的 ::addPItoST43 方法一起使用吗?

标签: typo3 typo3-7.6.x typo3-8.x typo3-extensions pibase


【解决方案1】:

我想这部分

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
array('LLL:EXT:rx_extkey/Resources/Private/Language/locallang_db.xml:tt_content.list_type_pi1',
     'rx_extkey_pi1',
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('rx_extkey') . 'ext_icon.png'
     ),
     'list_type',
     'rx_extkey'
    );

属于 ext_tables.php

【讨论】:

  • 我很确定从 6.x 开始,它必须在 TCA Override 目录内的 tt_content.php 文件中
  • 也许你应该使用 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin()' in Configuration/TCA/Overrides/tt_content.php` 而不是 addPlugin。 docs.typo3.org/typo3cms/ExtbaseFluidBook/4-FirstExtension/…
  • 目前正在处理另一项任务 - 我将在当天晚些时候尝试 - 感谢您的意见
猜你喜欢
  • 2015-04-25
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2021-05-14
  • 2017-10-25
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多