All Projects → Anubarak → craft-relabel

Anubarak / craft-relabel

Licence: MIT license
Relabel Plugin for Craft

Programming Languages

PHP
23972 projects - #3 most used programming language
javascript
184084 projects - #8 most used programming language
Twig
543 projects
CSS
56736 projects

Projects that are alternatives of or similar to craft-relabel

Craft Emptycoalesce
Empty Coalesce adds the ??? operator to Twig that will return the first thing that is defined, not null, and not empty
Stars: ✭ 24 (-17.24%)
Mutual labels:  craft-plugin, craft3
Seo
SEO utilities including a unique field type, sitemap & redirect manager
Stars: ✭ 210 (+624.14%)
Mutual labels:  craft-plugin, craft3
Aws S3
Amazon S3 volume type for Craft CMS
Stars: ✭ 57 (+96.55%)
Mutual labels:  craft-plugin, craft3
Spoon
Spoon plugin for Craft CMS - Enhance your Matrix fields with groups, tabs and more!
Stars: ✭ 82 (+182.76%)
Mutual labels:  craft-plugin, craft3
Craft Preparse Field
Field type that parses twig when an element is saved.
Stars: ✭ 103 (+255.17%)
Mutual labels:  craft-plugin, craft3
Geomate
GeoMate is a friend in need for all things geolocation. IP to geo lookup, automatic redirects (based on country, continent, language, etc), site switcher... You name it.
Stars: ✭ 19 (-34.48%)
Mutual labels:  craft-plugin, craft3
craft-router
A Craft CMS plugin for using URL segments as filtering criteria on an entry query.
Stars: ✭ 21 (-27.59%)
Mutual labels:  craft-plugin, craft3
Imager Craft
This plugin has been DEPRECATED. Check out Imager X instead.
Stars: ✭ 351 (+1110.34%)
Mutual labels:  craft-plugin, craft3
Guest Entries
Accept anonymous entry submissions with Craft.
Stars: ✭ 100 (+244.83%)
Mutual labels:  craft-plugin, craft3
Buttonbox
A collection of utility field types for Craft
Stars: ✭ 94 (+224.14%)
Mutual labels:  craft-plugin, craft3
Commerce
Fully integrated ecommerce for Craft CMS
Stars: ✭ 144 (+396.55%)
Mutual labels:  craft-plugin, craft3
Craft Imageoptimize
Automatically create & optimize responsive image transforms, using either native Craft transforms or a service like Imgix, with zero template changes.
Stars: ✭ 227 (+682.76%)
Mutual labels:  craft-plugin, craft3
Craft3 Templateselect
A fieldtype that allows you to select a template from the site templates folder.
Stars: ✭ 18 (-37.93%)
Mutual labels:  craft-plugin, craft3
Simplemap
A beautifully simple map field type for Craft CMS.
Stars: ✭ 136 (+368.97%)
Mutual labels:  craft-plugin, craft3
Element Api
Create a JSON API/Feed for your elements in Craft.
Stars: ✭ 493 (+1600%)
Mutual labels:  craft-plugin, craft3
Generator Craftplugin
generator-craftplugin is a Yeoman generator for Craft CMS plugins
Stars: ✭ 69 (+137.93%)
Mutual labels:  craft-plugin, craft3
craft-recipe
A comprehensive recipe FieldType for Craft CMS that includes metric/imperial conversion, portion calculation, and JSON-LD microdata support
Stars: ✭ 23 (-20.69%)
Mutual labels:  craft-plugin, craft3
Contact Form
Add a simple contact form to your Craft CMS site.
Stars: ✭ 294 (+913.79%)
Mutual labels:  craft-plugin, craft3
Upper
Integrates Edge Caches like Fastly, KeyCDN, Cloudflare and Varnish with Craft.
Stars: ✭ 89 (+206.9%)
Mutual labels:  craft-plugin, craft3
Plugins
The master list of Craft 3-compatible plugins
Stars: ✭ 111 (+282.76%)
Mutual labels:  craft-plugin, craft3

Relabel Plugin for Craft CMS 3.x

drawing

Requirements

This plugin requires Craft CMS 3.0.0 or later. Important: if you are coming from Craft 2 - there is no migration currently so all your Relabels will be deleted. If you really need a migration feel free to contact me or backup the table and insert it on your own

Installation

To install the plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require anubarak/craft-relabel
    
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Relabel .

Basic Hints

Relabel creates a custom Database table that stores the new labels. Default Craft fields are not touched in any way. The strings are replaced by JavaScript so you can remove/uninstall the plugin whenever you want without breaking changes in your Control Panel. Relabel is compatible with the Craft 3 project config so you only need to relabel your fields in your main environment and can sync all data.

Usage

Go to your field layout, click on the wheel icon and select "Relabel"

Screenshot

Your field layout will have a different label and description.

To receive error messages that contains your new relabel strings do

$errors = Relabel::getErrors($element);

Or in Twig

{% set errors = relabel.getErrors(element) %}

Register Relabel for custom element types

There is an event to register Relabel for a custom form,

use anubarak\relabel\services\RelabelService;

Event::on(
    RelabelService::class,
    RelabelService::EVENT_REGISTER_LABELS,
    function(RegisterLabelEvent $event) use($myCustomElement){
        $event->fieldLayoutId = $myCustomElement->fieldLayoutId;
    }
);

Register additional Relabels

You can as well register additional Labels for every field layout within your Plugins init function as well. Important: you need to have the event there and not in certain Controllers because I need to pass those variables before the Controller action begins otherwise I'm not able to inject the required JavaScript to the request. This is an example how you could register custom nested field layouts

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;
                    }
                }
            }
        }
    }
);

If Relabel does not support your HTML yet, feel free to contact me and we'll find a way to make it work

Currently supported Element Types are

  • 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

Register custom labels after Ajax requests

Crafts entries are able to change the field layout by changing the entry type, if you want to be able to change the field layout for a custom element type via Javascript as well you need to include these lines

$labelsForLayout = Relabel::getService()->getAllLabelsForLayout($layout->id);
Craft::$app->getView()->registerJs('Craft.relabel.changeEntryType(' . json_encode($labelsForLayout) . ');');
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].