anubarak / craft-relabel
Relabel 插件 Craft
Requires
- craftcms/cms: ^3.5.0-beta.3
This package is auto-updated.
Last update: 2024-09-10 03:48:53 UTC
README
要求
此插件需要 Craft CMS 3.0.0 或更高版本。重要:如果您来自 Craft 2,目前没有迁移功能,因此所有标签都将被删除。如果您真的需要迁移,请随时联系我或备份表并在自己的设备上插入它。
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的 Craft 项目
cd /path/to/project
-
然后告诉 Composer 加载插件
composer require anubarak/craft-relabel
-
在控制面板中,转到设置 → 插件,并点击“安装”按钮以安装 Relabel。
基本提示
Relabel 创建一个自定义数据库表,用于存储新标签。默认 Craft 字段不会被任何方式触及。字符串通过 JavaScript 替换,因此您可以在任何时候删除/卸载插件,而不会在您的控制面板中造成更改。Relabel 与 Craft 3 项目配置兼容,因此您只需要在您的开发环境中重新标记字段即可同步所有数据。
使用方法
转到您的字段布局,点击轮形图标并选择“重命名”
您的字段布局将具有不同的标签和描述。
要接收包含您新重命名字符串的错误消息,请
$errors = Relabel::getErrors($element);
或者用 Twig
{% set errors = relabel.getErrors(element) %}
为自定义元素类型注册 Relabel
有一个事件可以将 Relabel 注册到自定义表单中,
use anubarak\relabel\services\RelabelService; Event::on( RelabelService::class, RelabelService::EVENT_REGISTER_LABELS, function(RegisterLabelEvent $event) use($myCustomElement){ $event->fieldLayoutId = $myCustomElement->fieldLayoutId; } );
注册额外的 Relabel
您还可以在您的插件 init
函数中为每个字段布局注册额外的标签。重要:您需要在事件中而不是在特定的控制器中,因为我在控制器动作开始之前需要传递这些变量,否则我无法向请求注入所需的 JavaScript。这是一个如何注册自定义嵌套字段布局的示例
Event::on( RelabelService::class, RelabelService::EVENT_REGISTER_ADDITIONAL_LABELS, function(Event $event) { $layoutId = $event->fieldLayoutId; $fields = Craft::$app->getFields()->getFieldsByLayoutId($layoutId); $plugin = Craft::$app->getPlugins()->getPlugin('relabel'); /** @var RelabelService $service */ $service = $plugin->get('relabel'); foreach ($fields as $field){ if($field instanceof Field){ $blocks = $field->getBlockTypes(); foreach ($blocks as $block){ $layoutForBlock = (int)$block->fieldLayoutId; $index = $field->handle . '.' . $block->handle; $relabels = $service->getAllLabelsForLayout($layoutForBlock, $index); foreach ($relabels as $relabel){ $event->labels[] = $relabel; } } } } } );
如果 Relabel 还不支持您的 HTML,请随时联系我,我们将找到使其工作的方式。
目前支持的元素类型包括
- craft\elements\Entries
- craft\elements\Assets
- craft\elements\GlobalSets
- craft\elements\Categories
- craft\elements\Users
- verbb\voucher\elements\Voucher
- verbb\voucher\elements\Code
- craft\commerce\elements\Order
- craft\commerce\elements\Product
- craft\commerce\elements\Variant
- Solspace\Calendar\elements\Calendar
在 Ajax 请求后注册自定义标签
Craft 条目可以通过更改条目类型来更改字段布局,如果您想通过 JavaScript 也更改自定义元素类型的字段布局,则需要包含这些行
$labelsForLayout = Relabel::getService()->getAllLabelsForLayout($layout->id); Craft::$app->getView()->registerJs('Craft.relabel.changeEntryType(' . json_encode($labelsForLayout) . ');');