我想制作一份扩展的副本,作为我自己扩展的基础。我如何克隆一个TYPO3扩展,以同样的行为开始我自己的扩展。我必须更改哪些文件和参数?
如果您想手动更改EXT-Key
对于Shell:
cp -r source_ext target_ext
无外壳:
重要的是要知道:
如果你的扩展目录有一个像vendor_extkey这样的_,命名空间看起来像这样:没有下划线的VendorExtkey,但是有CamelCase拼写。
ext_emconf.php:做出你的改变...这不是那么重要...
ext_localconf.php:
至您的供应商/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
或
<?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(完全合格的类名)。其他设置保持原样。
在每个TCA/Overrides/文件中。php
搜索路径:LLL:EXT:source\u EXT/Resources/Private/Language/locallang\u db。xlf
并将其更改为:
LLL:EXT:target_ext/Resources/Private/Language/locallang_db.xlf
通常,您可以搜索EXT:source\u EXT并将其替换为EXT:target\u EXT。
通常在这里你会发现这样的东西:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('source_ext','Configuration/TypoScript','Extension Name');
将源文本更改为目标文本。请参阅此处有关addStaticFile的更多信息。
// Register Plugin
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'Vendor.ExtKey',
'Plugin Name',
'Plugin Title'
);
更多关于registerPlugin的信息。如果sys_模板和tt_内容中的部分不存在,请查看ext_表。php-
这里只需将EXT:source\u EXT更改为EXT:target\u EXT。
如果你体内有这样的东西:
## Override storagePid for UserGroups
Vendor\SourceExt\Domain\Model\UserGroup {
newRecordStoragePid = {$plugin.tx_sourceext.settings.groupStoragePid}
只需将供应商和SourceExt更改为CamelCase拼写即可。
如果在其中使用ViewHelper,则只需迁移名称空间。应出现在第一行中。
将{命名空间短代码=Vendor\SourceExt\ViewHelper}
更改为{命名空间短代码=NewVendor\TargetExt\ViewHelper}
我希望我能帮忙。如果我忘了什么,请留下评论。
虽然您可以克隆现有扩展并更改扩展键、插件名称、名称空间、数据库表等(在大多数情况下,简单的搜索/替换可能有效,但请确保区分大小写!)。。。
但是,您是否考虑过使用extension_builder作为启动新扩展的替代方案?对于8.7版本,使用github的extension_builder。
你可以看看github上的这个脚本:https://github.com/colorcube/typo3_clone_extension
基本上,你必须替换扩展键的所有实例,例如“my_ext”,以及包含该键的文件名。
为了在处理JavaScript对象时通过另一个对象继承一个对象的属性,我经常看到使用,其目的是创建一个具有另一个对象属性的对象,然后对其进行扩展。 为什么我们不能只使用与扩展对象更相关的 ? 请告诉我这两者之间的区别,以及为什么我们不能而不是这是一个昂贵的操作。
问题内容: 我有一个其中包含许多bufferedimages的对象,我想创建一个新对象,将所有bufferedimages复制到新对象中,但是这些新图像可能会更改,并且我不希望通过更改原始对象图像来更改新对象图像。 明白了吗? 这有可能做到吗,有人可以建议一个好方法吗?我曾经想到过getSubImage,但在某处阅读过,该子映像的任何更改都被重新关联回了父映像。 我只希望能够获得BufferedI
问题内容: 如何克隆 Java并同时在Java中克隆其项目? 例如,我有: 我希望其中的对象与狗列表中的对象不同。 问题答案: 你将需要迭代这些项目,然后逐个克隆它们,然后将克隆放入结果数组中。 显然,要使该方法起作用,你将必须使你的类实现接口并重写该方法。
问题内容: 如果克隆数组,我将使用 我想知道如何在nodejs中克隆对象。 问题答案: 对于不需要压缩每一滴性能的实用程序和类,我经常作弊,只是使用JSON执行深层复制: 这不是唯一的答案,也不是最优雅的答案。所有其他答案都应考虑成为生产瓶颈。但是,这是一个快速而肮脏的解决方案,非常有效,并且在大多数情况下(我会克隆属性的简单哈希值)很有用。
我已经在数据库中保存了一个JPA实体。 我想拥有它的副本(具有不同的id),并修改了一些字段。 最简单的方法是什么?例如: 将它的字段设置为并持久化它会起作用吗? 我是否必须为实体创建一个克隆方法(复制除之外的所有字段)? 还有其他方法吗(比如使用克隆框架)?
我有下面的java代码,当我稍后尝试访问MiscDoc对象时,它似乎是空的。我找不到答案。NotesDocument上的clone()方法。 if语句只被访问一次 我该如何解决这个问题