Google Indexing API for Magento 2
€46.52
Netto: €46.52
kowal/module-product-features is a Magento 2 module for presenting the most important product features directly on the product page. The extension turns data stored in Magento attributes into clear, visually appealing, and collapsible sections that help customers understand the product faster, compare its parameters, and make a purchase decision.
The module was designed for stores where the standard attributes table is not sufficient: products have functional features, use cases, technologies, parameter levels, certificates, graphics, icons, or additional CMS descriptions. Instead of showing them as a long, technical list, the store can present them as organized sections tailored to the product context.
Customers visiting a product page usually look for answers to specific questions:
The module addresses these needs by moving product features from technical administrative data into a clear shopping-focused layer. The customer does not need to analyze raw attribute names or long tables. Instead, they get sections described in sales-oriented language, enhanced with icons, scales, images, or content blocks.
The module helps organize product information in a way that supports sales and customer service:
The module displays a set of configurable sections on the product page. Each section can use a single product attribute or aggregate several attributes in one block. The administrator decides which features are visible, in what order they appear, and which presentation type is used to render them.
Key capabilities:
On the product page, the module adds a block with product features. Sections have a heading, content, and an icon indicating the expanded state. This keeps the product page organized even when the product has a lot of additional information.
Sections can be expanded or collapsed by default. This allows the most important information to be exposed immediately, while supporting content such as specifications, delivery, returns, or longer descriptions can remain available on click.
If the product has no value for the attribute used in a given section, the module can hide the section automatically. As a result, the customer only sees information that actually applies to the viewed product.
The module supports multiple ways of presenting product data.
The scale type is used to display dropdown attributes that have 2 or 3 values. The customer sees the full scale context, and the selected product value is highlighted.
Usage examples:
This presentation type is more readable than a plain text value, because it shows where the product is positioned relative to the other options.
The swatch_list type presents selected multiselect attribute values together with the swatch. This can be an icon, color, or text label configured in Magento.
Usage examples:
The customer gets a short list of values assigned to the product, enhanced with a visual element.
The multiselect_icon type allows you to use icons assigned to attribute options in the Amasty ShopbyBrand / ShopbyBase module. If the option has an image in the Small Image field, the module can display it next to the label.
This solution is useful when the store already manages feature, brand, sport, or use-case icons in the Amasty configuration and wants to use the same assets on the product page.
The cms_blocks type uses the product attribute blocks_id. The administrator assigns active CMS blocks to the product, and the module renders each selected block as a separate collapsible section.
Usage examples:
This allows descriptive content to be managed through standard Magento CMS blocks and assigned only to selected products.
The module also supports typical attribute data:
This makes it possible to build both a simple section with a single parameter and a more advanced specification from multiple attributes.
For special data, the module provides dedicated presentation methods:
yes_no for yes/no values,checkmark for positive features,date for dates formatted according to the store locale,price for price values formatted in the store currency,number_with_unit for numbers with a unit,range_bar for values shown as a range bar,rating_dots for ratings or levels shown as dots.These variants help match the data format to the way the customer naturally reads it.
The module also supports image attributes:
This can be used to present technology icons, certificates, pictograms, product markings, or additional informational graphics.
The module appearance is based on admin configuration and CSS variables. The store can set global colors, section background, text colors, accents, borders, rounding, spacing, and font sizes without editing template files.
Additionally, the module supports appearance profiles. This means one section can have a standard look, another a more compact one, and another can be highlighted with a different color or accent. This is useful when emphasizing important content, such as certificates, technologies, or information that affects the purchase decision.
The module works especially well in stores where the product requires explanation:
An example layout on the product page may include:
Product Features section with several scales,Use Case section as an icon list,Technologies section as a swatch list,Specification section as an attributes table,Delivery, Returns and Instructions for Use.kowal/module-product-features organizes product information and allows it to be presented in a form tailored to the customer purchase decision. The module uses existing Magento mechanisms: product attributes, swatches, CMS blocks, Store View, and system configuration, and then transforms them into clear sections on the product page.
The result is a product page that explains product value better, is easier to scan, and gives administrators greater control over how product features are communicated to customers.
This document describes the configuration of the kowal/module-product-features module, the meaning of all admin fields, and working with attributes on the product side.
The module is intended for installation via Composer.
composer config repositories.module.product.features vcs https://github.com/kowalco/product-featurescomposer config --global --auth github-oauth.github.com composer require kowal/module-product-featuresbin/magento module:enable Kowal_ProductFeaturesbin/magento setup:upgradebin/magento cache:flush After production deployment, standard commands appropriate for the project should be run, for example DI compilation and static asset deployment, according to the Magento operating mode.
The module configuration is located in the Magento admin panel:
Stores > Configuration > Catalog > Product Features
Appearance settings are located in a separate group:
Stores > Configuration > Catalog > Product Features Appearance
Configuration fields are available at the Default, Website, and Store View levels. This allows different store views to have different feature sections or a different appearance.
Enables or disables the module for the given configuration scope.
Values:
Yes - product feature sections are rendered on the product page,No - the module does not return sections and the block does not appear on the frontend.Usage: quickly disable the module for the entire store, a selected Website, or a Store View without removing the section configuration.
List of sections rendered on the product page. Each row defines one frontend section or a group of sections if the cms_blocks type is used.
Enables or disables a single section.
Values:
Yes - the section is included in rendering,No - the section is skipped.Usage: temporarily hide one section without deleting its settings.
The section title visible on the product page.
Examples:
Product Features,Sports Use,Specification,Technologies,Delivery.Usage: the name should be understandable to the customer and does not have to match the technical attribute name.
Note: for the cms_blocks type, the child section title is taken from the CMS block title.
A single product attribute used by the section. The field is a dropdown with a list of product attributes.
Usage: use this field when the section is based on a single attribute, for example sport_usage, blocks_id, material, technology_icon.
A list of multiple product attributes used by one section. The field is a multiselect.
Usage: use this field when one section should aggregate several features, for example several scales in the Product Features section or several parameters in the Specification section.
Example: the Product Features section may contain the attributes fit, resistance, stretch and breathability, all rendered as scales.
Defines the presentation method for the attribute value.
An empty Auto value means automatic renderer selection:
blocks_id is rendered as cms_blocks,swatch_list,scale,selected_label,text_list,checkmark,date,price,text_block,image,text_inline.Available types:
| Type | Usage |
|---|---|
scale | Scale for a select attribute with 2 or 3 options. |
swatch_list | List of selected multiselect values with a Magento swatch. |
multiselect_icon | List of selected multiselect values with an Amasty ShopbyBrand / ShopbyBase icon. |
cms_blocks | Separate sections created from CMS blocks assigned via blocks_id. |
text_inline | Short text value. |
text_block | Longer text. |
html_block | HTML content from the attribute. |
accordion_text | HTML/text content in a collapsible section. |
key_value | Label-value rows. |
table | Technical data in a tabular layout. |
selected_label | Label of the selected select attribute option. |
text_list | Text list of selected multiselect values. |
badge | Single value as a badge. |
badge_list | List of values as badges. |
icon_value | Single value with an icon. |
icon_list | List of values with icons. |
swatch_grid | Selected multiselect values in a swatch grid. |
yes_no | Boolean value as Yes or No. |
checkmark | Boolean value as a positive feature; visible only for a true value. |
date | Date formatted according to the store. |
price | Price formatted by Magento. |
number_with_unit | Number with a unit. |
range_bar | Number as a range bar. |
rating_dots | Number as active level dots. |
radial_chart | Fractional value, for example 4/6 or 7/10, as a radial chart with the attribute label. |
image | Single image from an image attribute. |
image_with_label | Image with caption. |
image_grid | Several images in a visual layout. |
In the admin panel, some items are marked as available in future release. This applies to types that are already visible in the configuration list but do not yet have their own final frontend presentation:
table,badge,badge_list,icon_value,icon_list,swatch_grid.The order of sections on the product page. A lower number means earlier display.
Usage: place the most important sections first, for example 10 for main features, 20 for use cases, 30 for specification.
The initial state of the section on the product page.
Values:
Expanded - the section is expanded by default,Collapsed - the section is collapsed by default.Usage: the most important content can be shown immediately, while longer supporting information can remain collapsed.
Determines whether the section should be hidden when there is no data to display.
Values:
Yes - the section is hidden if the product has no attribute value or the renderer returns no items,No - the section may remain visible even without items.Usage: Yes is usually recommended so the customer does not see empty sections.
Selects an appearance profile defined in the Appearance Profiles field.
The field is a dropdown. The administrator no longer enters the code manually, but selects a ready-made profile from the list, usually in the code - label format.
Usage: allows a specific section to have a different appearance than the global one, for example the compact, highlight, or plain profile.
If the field is empty and the Use global appearance option is selected, the section uses the global appearance.
Recommended workflow:
Appearance Profiles,Feature Sections,Appearance Profile column for the appropriate section.Additional CSS class added to the section.
Usage: individual appearance customization in the frontend theme, for example product-features-section--technical.
Optional settings passed to the renderer in JSON format.
Usage depends on the presentation type. Examples:
{'unit':'cm','precision':1}For number_with_unit:
unit - unit, for example cm, %, g/m2,precision - number of decimal places.For range_bar:
min - minimum range value,max - maximum range value,low_label - label for the beginning of the range,high_label - label for the end of the range.For rating_dots:
steps - number of dots or levels.The radial_chart type does not require additional options. The renderer reads the attribute value or option label in the x/y format, for example 1/6, 4/6, 7/10.
Example for a range bar:
{'min':0,'max':100,'low_label':'Low','high_label':'High'}Example for dots:
{'steps':5}Note: the field must contain valid JSON. An invalid value is ignored by the renderer.
List of optional appearance profiles that can be assigned to sections through the Appearance Profile field.
Technical profile code.
Examples:
compact,highlight,plain.Usage: the code identifies the profile internally and is used as the option value in the Appearance Profile dropdown for a section.
Descriptive profile name visible to the administrator.
Usage: makes it easier to recognize the profile in configuration, for example Compact, Highlighted, Neutral. Combined with the code, it creates a clear label in the profile selection list in Feature Sections.
Section background color for the profile.
Usage: highlight selected sections or match the theme.
Primary text color in the section.
Section title color.
Accent color, for example active elements, scale dots, or highlights.
Background color of accent elements.
Color of lines, separators, scale axes, and borders.
Color of the section expand and collapse icon.
Section corner rounding.
Examples: 0, 8px, 18px.
Inner section spacing.
Examples: 16px, 24px, 28px.
Font size of feature labels in the section.
Examples: 16px, 18px, 21px, 1.25rem.
This group contains the global appearance of sections. The settings are converted into CSS variables and applied to the module wrapper.
Section background color.
Default: #f4f4f4.
Primary text color in the section.
Default: #000000.
Section heading color.
Default: #000000.
Color of supporting and less important text.
Default: #555555.
Color of active elements and highlights.
Default: #000000.
Background color of active elements, for example selections.
Default: #ffffff.
Color of borders, separators, and scale axes.
Default: #9b9b9b.
Color of the + / - icon in the section heading.
Default: #000000.
Color of the selected value text.
Default: #000000.
Font weight of the selected value.
Default: 700.
Examples: 400, 500, 600, 700, bold.
Corner rounding of the section container.
Default: 18px.
Inner section spacing.
Default: 28px.
Spacing between sections.
Default: 16px.
Font size of the section heading.
Default: 20px.
Examples: 18px, 20px, 1.25rem, clamp(18px, 2vw, 22px).
Font size of feature labels and value labels.
Default: 21px.
Font size of the main section content.
Default: 16px.
The module does not create a separate product data system. It uses Magento product attributes, so content management takes place mainly in product editing.
Catalog > Products.Product Features group and set the CMS Blocks field.The section will appear on the frontend only if:
Hide Empty.blocks_id / CMS BlocksDuring setup:upgrade, the module adds a product attribute:
blocks_id,CMS Blocks,text,multiselect,Product Features,The CMS Blocks field allows active CMS blocks to be assigned to the product. Each selected block will be rendered as a separate section if the module configuration contains a section with:
Attribute Code: blocks_id,Display Type: cms_blocks.The section title on the frontend comes from the CMS block title, and the content comes from the block content. Inactive blocks or blocks unavailable for the Store View are not rendered.
Blocks used by blocks_id are created in the standard Magento way:
Content > Elements > Blocks
Recommendations:
The blocks_id attribute is prepared for use with mass product editing.
Catalog > Products.Update Attributes action.CMS Blocks field.Usage: quickly assign the same CMS section, for example Delivery, Returns, or Care Instructions, to multiple products at the same time.
For the scale type, use select attributes with 2 or 3 active options.
Example:
fit,Loose, Regular, Fitted.The product should have one of the options selected. The module will show all scale options and highlight the one assigned to the product.
If the attribute has fewer than 2 or more than 3 options, the scale renderer will skip that attribute.
For lists of features, use cases, technologies, or certificates, use multiselect attributes.
Possible presentation types:
text_list,badge_list,swatch_list,swatch_grid,multiselect_icon,icon_list.The product may have several values selected. The module renders only the values assigned to the product.
If a multiselect attribute uses Magento swatches, you can use the swatch_list or swatch_grid type.
Usage:
If the option has an image swatch, the module will display the image. If it has a color or text swatch, the module will use the appropriate variant.
For the multiselect_icon type, the module attempts to retrieve the option icon from Amasty ShopbyBrand / ShopbyBase.
Icon source:
Shop by Brand > Option Edit > Other > Small Image
Alt text comes from Small Image Alt, and if it is missing, from the option label.
If Amasty is not installed or the option has no icon, the module will display only the label.
For short information, use text_inline, key_value, or badge.
For longer descriptions, use text_block, accordion_text, or html_block.
Note: html_block and accordion_text render HTML, so they should be used only for trusted admin content.
For numeric values, you can use:
number_with_unit - when the number requires a unit,range_bar - when the value should be shown as progress within a range,rating_dots - when the value describes a level or rating.Example Renderer Options JSON for a number with a unit:
{'unit':'%','precision':0}For yes/no attributes, use:
yes_no, when the customer should see both Yes and No,checkmark, when the feature should be visible only if the product has it.For image-type attributes, you can use:
image,image_with_label,image_grid.The module builds the image URL based on the Magento product media directory and uses the attribute label as the alt text.
Section with several scales:
| Field | Value |
|---|---|
| Enabled | Yes |
| Section Title | Product Features |
| Attribute Codes | fit, resistance, stretch, breathability |
| Display Type | scale |
| Sort Order | 10 |
| Default State | Expanded |
| Hide Empty | Yes |
Use-case section with icons:
| Field | Value |
|---|---|
| Enabled | Yes |
| Section Title | Sports Use |
| Attribute Code | sport_usage |
| Display Type | multiselect_icon |
| Sort Order | 20 |
| Default State | Collapsed |
| Hide Empty | Yes |
CMS sections:
| Field | Value |
|---|---|
| Enabled | Yes |
| Section Title | Additional Information |
| Attribute Code | blocks_id |
| Display Type | cms_blocks |
| Sort Order | 30 |
| Default State | Collapsed |
| Hide Empty | Yes |
If a section does not appear on the frontend, check:
Enabled is set to Yes,Enabled = Yes,Attribute Code or Attribute Codes was selected,Display Type matches the attribute type,Hide Empty is not hiding the empty section,