我想将扩展程序的副本作为我自己的扩展程序的基础。如何克隆TYPO3扩展以使用相同的行为启动我自己的扩展。 我必须改变哪些文件和参数?
答案 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:
重要的是要知道:
如果您的Extension-Directory有一个_ inside,例如`vendor_extkey'命名空间如下所示:VendorExtkey没有Underscore,但是使用了CamelCase拼写。
ext_emconf.php:进行更改..这不是那么重要......
ext_localconf.php:
OldVendor.ExtKey
更改为NewVendor.ExtKey
到您的Vendor / ExtKey。
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
}
}
如果你在/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。
通常在这里你会发现这样的事情:
\ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: addStaticFile(&#39; source_ext&#39;,&#39; Configuration / TypoScript&#39;,&#39; Extension Name&#39;);
将source_ext更改为target_ext。详细了解addStaticFile here。
// 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被标记为已弃用。
这里只需将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}
我希望我能提供帮助。如果我忘记了什么,请发表评论。