如何克隆TYPO3扩展?

时间:2018-03-27 22:32:02

标签: typo3 extbase

我想将扩展程序的副本作为我自己的扩展程序的基础。如何克隆TYPO3扩展以使用相同的行为启动我自己的扩展。 我必须改变哪些文件和参数?

3 个答案:

答案 0 :(得分:1)

虽然可以克隆现有扩展并更改扩展密钥,插件名称,命名空间,数据库表等(在大多数情况下,简单的搜索/替换可能有效,但请务必执行以下操作 - 虽然敏感!)...

但是,您是否考虑过使用extension_builder作为启动新扩展程序的替代方案?对于版本8.7,请使用extension_builder from github

答案 1 :(得分:0)

您可以在github上查看此脚本: https://github.com/colorcube/typo3_clone_extension

基本上你必须替换Extension键的所有实例,例如“my_ext”,以及包含密钥的文件名。

答案 2 :(得分:0)

如果您想手动更改EXT-Key& -Vendor,你必须做到这一点,我在几周之前做了几次;)。

复制您的分机

使用Shell:

cp -r source_ext target_ext

没有Shell:

  • 复制source_ext
  • 将source_ext_copy重命名为target_ext_name

重要的是要知道:

如果您的Extension-Directory有一个_ inside,例如`vendor_extkey'命名空间如下所示:VendorExtkey没有Underscore,但是使用了CamelCase拼写。

迁移Rootfiles

ext_emconf.php:进行更改..这不是那么重要......

ext_localconf.php:

  • 在configurePlugin中:
    • OldVendor.ExtKey更改为NewVendor.ExtKey
    • 和PluginName。有关configurePlugin here的更多信息。
  • 在addPageTSConfig中:Chage以下内容:
    • 元素下的名称
    • EXT:路径
    • LIST_TYPE

到您的Vendor / ExtKey。

  • 在ext_typoscript_setup.txt中:你必须改变这样的东西,如果存在的话:
TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
    subclasses {
        Tx_VendorExtkey_User = Vendor\VendorExtkey\Domain\Model\User
    }
}
Vendor\VendorExtkeyn\Domain\Model\User {
    mapping {
        tableName = fe_users
        recordType = Tx_VendorExtkey_User
    }
}

迁移类:模型,存储库和ViewHelpers

如果你在/Classes/Domain/Model/Yourmodel.php中有一个模型,那么第一行必须如下所示:

<?php
namespace Vendor\ExtKey\Domain\Model;
// Directory ext_key

OR

<?php
namespace Vendor\Extkey\Domain\Model;
// Directory extkey

在资源库中,它看起来是一样的:只需将Model更改为Repository

在ViewHelper中,它有点不同:只需将Domain\Model更改为ViewHelpers

模型中的任何地方都必须检查以下内容:

/**
 * @param \Vendor\ExtKey\Domain\Model\Yourmodel $yourmodel
 * @return void
 */
public function addLink(\Vendor\ExtKey\Domain\Model\Yourmodel $yourmodel)
{
    ...
}

在这里你必须使用FQCN(完全Quallified类名)。保持其他设置不变。

迁移配置

在每个TCA/Overrides/file.php搜索路径LLL:EXT:source_ext/Resources/Private/Language/locallang_db.xlf并将其更改为:

LLL:EXT:target_ext/Resources/Private/Language/locallang_db.xlf

通常您可以搜索EXT:source_ext并将其替换为EXT:target_ext。

迁移:Configuration / TCA / sys_template.php

通常在这里你会发现这样的事情:

\ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: addStaticFile(&#39; source_ext&#39;,&#39; Configuration / TypoScript&#39;,&#39; Extension Name&#39;);

将source_ext更改为target_ext。详细了解addStaticFile here

迁移:配置/ TCA /覆盖/ tt_content.php

// Register Plugin
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'Vendor.ExtKey',
    'Plugin Name',
    'Plugin Title'
);

有关registerPlugin here的更多信息。如果sys_template和tt_content中的部分不在那里,请查看ext_tables.php - &gt;如上所述将其移动到正确的文件,因为ext_tables.php被标记为已弃用。

迁移配置/ TypoScript

这里只需将EXT:source_ext更改为EXT:target_ext。

如果你有这样的东西:

## Override storagePid for UserGroups
Vendor\SourceExt\Domain\Model\UserGroup {
    newRecordStoragePid = {$plugin.tx_sourceext.settings.groupStoragePid}

只需将Vendor和SourceExt更改为CamelCase拼写。

迁移模板,布局和部分

如果你在里面使用ViewHelper,你只需要迁移命名空间。应该出现在第一行。

{namespace shortcode=Vendor\SourceExt\ViewHelpers}更改为{namespace shortcode=NewVendor\TargetExt\ViewHelpers}

我希望我能提供帮助。如果我忘记了什么,请发表评论。