Product Label
v1.2.0
Product Label
- Updates and support included for 12 months
- License key delivered immediately by email
- 30-day money-back guarantee
- Full documentation included
- Compatible with Hyvä themes
- Composer-ready installation
Productlabels
Kortingsbadges, nieuw-labels en waarschuwingen bij lage voorraad zijn de goedkoopste conversiehefbomen in een catalogus, en tegelijk degene die het vaakst met een script van derden worden aangebouwd dat de pagina vertraagt. Deze module zet ze terug waar ze horen: gerenderd door Magento zelf, over de productafbeelding, op elke plaats waar een product verschijnt.
Er wordt niets in de browser getekend. Labels worden berekend op een eigen index en in de HTML geschreven: ze overleven de Full Page Cache, veroorzaken geen layout shift en blijven zichtbaar voor zoekmachines. Een categoriepagina draagt haar labels voor één extra databasequery, ongeacht het aantal producten erop.
Voor wie
- Verkopers met lopende acties die de korting al in het overzicht willen tonen, niet
- B2B-catalogi waar staffelkortingen en voorraadniveaus de aankoop bepalen
- Teams die op Core Web Vitals letten en weigeren nog een render-blokkerend script toe te
alleen op de productpagina
voegen
Belangrijkste voordelen
- Veertien vormen, geen afbeeldingsbestanden — hoeklinten, banners, sterren,
- Kleuren gekozen, niet gecodeerd — achtergrond-, tekst- en accentkleur komen uit de
- Dynamische waarden die eerlijk blijven — toon het werkelijke kortingspercentage,
- Targeting die u al kent — dezelfde voorwaardenbouwer als bij catalogusprijsregels,
- Elke plaats, één instelling — categorieoverzichten, zoekresultaten, widgets,
- Vloeiend op elk scherm — de badgegrootte is relatief aan de productafbeelding en
- Cachebestendig van opzet — de weergave varieert per store view en klantgroep via
- Toegankelijk en inclusief — bij elke badge staat een verborgen leesbare zin, zodat
zeshoeken, prijskaartjes en meer, allemaal als vectorafbeelding gegenereerd. Scherp op elk scherm, herkleurbaar vanuit de back-office, en geen enkele extra HTTP-aanvraag.
ingebouwde Magento colour picker. De tekstkleur wordt afgeleid uit de luminantie van de achtergrond volgens de WCAG-formule, zodat een lichte badge nooit met onleesbare witte tekst live gaat.
het bespaarde bedrag, de staffelprijs en de bijbehorende drempel, de resterende dagen van een actie, of elk productattribuut. Percentages worden standaard naar beneden afgerond: 30% beloven bij een korting van 29,6% is niet te verdedigen.
aangevuld met kant-en-klare snelkoppelingen voor aanbieding, nieuw, niet op voorraad, laatste exemplaren en staffelkorting. Voorinstellingen vullen die bouwer in plaats van er een tweede, simpeler engine achter te verbergen.
gerelateerde en cross-sell blokken, de vergelijkingslijst, de verlanglijst, de winkelwagenpagina, de mini-winkelwagen en de productpagina. Eén keer instellen, en alleen aanpassen waar een plaats moet afwijken.
niet aan het venster, zodat hetzelfde label net zo goed in verhouding staat in een mobiel raster van twee kolommen als op een productafbeelding over de volle breedte, zonder breekpunten om te onderhouden.
dezelfde context die Magento al in zijn cachesleutel opneemt, zodat een groepsgebonden label niet naar een andere bezoeker kan lekken. Een label opslaan maakt de betrokken pagina's ongeldig.
"-30%" voluit wordt aangekondigd; posities gebruiken logische eigenschappen, zodat store views van rechts naar links zonder extra instellingen werken; en voorkeuren voor beperkte beweging worden gerespecteerd.
Compatibiliteit
- Magento 2.4.x / gelijkwaardige Mage-OS 2.x en 3.x
- PHP 8.1, 8.2, 8.3, 8.4, 8.5
- Vereist
wimakeit/module-core3.0.9 of hoger - Werkt direct op Luma en Breeze;
wimakeit/module-product-label-hyvavoegt het anker - Multi Source Inventory is optioneel: de verkoopbare hoeveelheid gebruikt het wanneer
- Meegeleverde i18n: Engels, Frans, Nederlands
voor de Hyvä productgalerij en de Tailwind-bronnen toe
het geïnstalleerd is, en valt anders terug op de klassieke stock registry
Installeer deze module via Composer. Zorg ervoor dat uw auth.json is geconfigureerd met uw Wimakeit-inloggegevens.
$ composer require wimakeit/module-product-label:^1.2.0
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependency
This module requires wimakeit/module-core 3.0.9 or later. Composer will pull it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
Multi Source Inventory is optional. When magento/module-inventory-sales-api is present, the salable quantity condition and the {{qty}} value account for reservations; without it they fall back to the legacy stock registry. Nothing needs to be configured either way.
First reindex
Labels only appear once the index has been built. After enabling the module, run:
bin/magento indexer:reindex wimakeit_product_label_rule
Two indexers share one index table, mirroring how Magento splits catalog price rules:
| Indexer | Reacts to |
|---|---|
wimakeit_product_label_rule | a label being created, edited or deleted |
wimakeit_product_label_product | product, price, stock and category changes |
Both are safe in Update by Schedule, which is the recommended mode on large catalogues.
ACL permissions
After installation, four ACL resources are registered under System → Permissions → User Roles:
| Resource | Default |
|---|---|
Wimakeit_ProductLabel::label (view the label grid) | granted to Administrator role only |
Wimakeit_ProductLabel::label_save (create and edit labels) | granted to Administrator role only |
Wimakeit_ProductLabel::label_delete (delete labels) | granted to Administrator role only |
Wimakeit_ProductLabel::config (edit module configuration) | granted to Administrator role only |
The conditions builder is served by this module's own controller, so managing labels does not require catalog price rule permissions.
Configuration
The module ships with safe production defaults. Go to Stores → Configuration → WiMakeIT → Product Labels only if you want to change them.
General settings
| Setting | Default |
|---|---|
| Enable Product Labels | Yes |
| When several labels share a position | Stacked side by side (alt: only the highest priority) |
| Enable Debug Logging | No — leave off in production |
Display
| Setting | Default |
|---|---|
| Show labels on | all contexts (listing, search, product page, gallery, related, cart, mini-cart, wishlist, comparison, widgets) |
| Maximum labels per position | 2 |
| Write label colours as inline styles | No — colours are emitted once per page in a single nonce-carrying <style> block, which is smaller and survives an enforced style-src policy |
Dynamic values
| Setting | Default |
|---|---|
| Discount percentage rounding | Round down — a badge promising 30% on a 29.6% discount is not defensible |
| Discount percentage decimals | 0 |
Indexing
| Setting | Default |
|---|---|
| Reindex on save up to this many products | 20000 — above this, saving a label marks the index invalid instead of rebuilding synchronously, so the admin save never hangs |
| Refresh date-driven labels by cron | Yes |
Performance
| Setting | Default |
|---|---|
| Preload labels for up to this many products per page | 500 |
| Cache rendered label markup | No — the Full Page Cache already covers this; enable only on very large catalogues that make heavy use of product attributes in label text |
| Rendered markup cache lifetime (seconds) | 86400 |
Accessibility
| Setting | Default |
|---|---|
| Announce labels to screen readers | Yes |
Cron jobs (registered automatically)
| Job | Schedule |
|---|---|
wimakeit_product_label_refresh_dated | 5 |
This job re-indexes products whose special price or new-product date window opened or closed, and cleans the page cache for those products. It runs hourly rather than daily so store views in different timezones each get their date boundary handled on the hour it actually occurs for them. This mirrors what Magento itself does for catalog price rules.
Hyvä storefronts
Labels already render on Hyvä without any extra module: the listing, search, widgets, related blocks, comparison, wishlist and the cart page all go through the standard Magento image block.
Install wimakeit/module-product-label-hyva to add the two surfaces Hyvä builds differently — the product page gallery and the Alpine mini-cart drawer — and to expose the wm-* classes to your theme's Tailwind build:
composer require wimakeit/module-product-label-hyva
bin/magento module:enable Wimakeit_ProductLabelHyva
bin/magento setup:upgrade
bin/magento hyva:config:generate
cd app/design/frontend/<Vendor>/<theme>/web/tailwind && npm run build
Command line
bin/magento wimakeit:product-label:reindex # rebuild everything
bin/magento wimakeit:product-label:reindex --label=on_sale # one label, by code or id
bin/magento wimakeit:product-label:reindex --product=42,43 # specific products
bin/magento wimakeit:product-label:list # labels and their match counts
wimakeit:product-label:list shows how many products each label currently matches, which is the fastest way to confirm a conditions tree does what was intended without opening the storefront.
Cache types
The module registers a Product Labels cache type, holding the label definitions per store view. It is invalidated automatically whenever a label is saved or deleted.
- Versie
- v1.2.0
- Ondersteuning
- 12 maanden
- Last updated
- 18 aug. 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Compatibel
- Pakket
-
wimakeit/module-product-label
Compatibility checker
Pick your stack to see if this module fits.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[1.2.0] - 2026-08-18
Feature
- Cibler des produits par référence. Une condition SKU s'ajoute aux règles, avec le sélecteur de produits de Magento : recherche, tri, cases à cocher. Plusieurs références se choisissent d'un coup.
- Aperçu en direct. Le pavé Apparence affiche une carte produit d'exemple qui se met à jour à chaque réglage — forme, position, taille, couleurs — et reste visible pendant qu'on fait défiler.
- Cinq étiquettes d'exemple livrées prêtes à l'emploi, désactivées, pour partir d'une base plutôt que d'une page blanche.
Admin
- Rotation, opacité, arrondi et décalages se choisissent dans des listes plutôt que se saisir au clavier.
- Les étiquettes ne collent plus au bord de l'image, sauf les rubans de coin pour lesquels c'est voulu.
Fix
- L'écran d'édition d'une étiquette pouvait ne plus s'ouvrir du tout sur Magento 2.4.9 / Mage-OS 3.1.0.
- Une étiquette posée sur une vignette de listing pouvait faire disparaître la photo du produit.
- Les tailles xs à xl ne se distinguaient presque pas sur les formes pilule et texte seul.
- Les listes Vues de magasin et Groupes de clients n'affichaient aucune option.
[1.1.0] - 2026-08-17
Fix
- Les tables de l'extension n'étaient pas créées à l'installation, rendant l'écran des étiquettes inutilisable.
[1.0.0] - 2026-08-17
Feature
- Product labels and badges rendered over product images across every surface: category listings, search, widgets, related and cross-sell blocks, comparison, wishlist, cart, mini-cart and the product page.
- Fourteen parametric vector shapes — corner ribbons, banners, starbursts, hexagons, price tags, bookmarks and more — recoloured from the back-office with no image files and no extra HTTP request.
- Dynamic values in label text: discount percentage and amount, prices, tier price and its quantity threshold, salable quantity, days left on a promotion, and any product attribute. Percentages round down by default so a badge never over-promises.
- Targeting through the native Magento condition builder, extended with shortcuts for on sale, new, out of stock, low stock, tier price and final price, plus six presets that fill the builder rather than hiding a second engine behind it.
- Per-context overrides, so a label can be smaller in the mini-cart or hidden in the cart without duplicating its configuration.
Perf
- Server-side rendering with a dedicated product-to-label index: no JavaScript, no layout shift, and labels remain visible to search engines.
- A category page resolves the labels for all its products in a single database query, whatever the number of products displayed.
- Rendering varies by store view and customer group through the context Magento already uses for its page cache key, so group-specific labels cannot leak between visitors.
Admin
- Label grid with live badge previews and the number of products each label currently matches, plus duplicate, mass enable, disable and delete.
- Live preview in the edit form driven by the same renderer as the storefront, so what is approved is exactly what ships.
- Colours chosen from the native Magento colour picker, with the text colour derived automatically from the background luminance for readable contrast.
wimakeit:product-label:reindexandwimakeit:product-label:listcommand line tools, and an admin REST API for cross-environment provisioning.
Security
- No free-form CSS anywhere: colours and dimensions pass through a closed, validated set of CSS custom properties, emitted in a single nonce-carrying style block that survives an enforced Content-Security-Policy.
- Label text is escaped segment by segment, so neither a merchant-entered string nor a resolved product value can inject markup.
Een bug gevonden? Laat het ons weten.
Een kort formulier opent in een nieuw tabblad — de modulenaam en uw taal zijn al ingevuld. Beschrijf wat u probeerde, wat misging, en wij komen binnen één werkdag bij u terug.
Een bug melden voor Product LabelHulp nodig?
Ons team helpt u graag met de integratie.