Free cookie consent management tool by TermsFeedAktualizacja preferencji plików cookie

Extended Product Information

€85.83 €69.78
COMPOSER Installation
M2-PRODUCT-FEATURES

View the module DEMO

username: features
password: M2Features

PayPal PayPal
Przelew Przelew

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.

Customer needs

Customers visiting a product page usually look for answers to specific questions:

  • is the product suitable for my use case,
  • how does it differ from other variants,
  • what are its key technical features,
  • does it have specific functions, certificates, or technologies,
  • what is the level of important parameters such as breathability, durability, flexibility, or fit,
  • what additional information, delivery, or returns details apply to this product.

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.

Business benefits

The module helps organize product information in a way that supports sales and customer service:

  • improves product page readability,
  • reduces the time needed to find key information,
  • limits the number of customer service questions about product parameters,
  • allows product advantages to be highlighted without rebuilding the store template,
  • enables different feature presentation depending on category, product type, or store,
  • makes it easier to use existing Magento attributes as sales content,
  • helps maintain a consistent look of feature sections across multiple Store View.

Module capabilities

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:

  • presentation of product features as collapsible sections on the product page,
  • independent expanding and collapsing of each section,
  • automatic hiding of empty sections,
  • support for single and multiple attributes in one section,
  • automatic selection of the presentation method for selected attribute types,
  • dedicated renderers for scales, lists, swatches, icons, CMS blocks, images, and numeric values,
  • ability to define a custom section order,
  • appearance profiles assigned to specific sections,
  • global configuration of colors, spacing, text sizes, and visual accents,
  • support for per Store View configuration.

Frontend features

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.

Presentation types

The module supports multiple ways of presenting product data.

Feature scales

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:

  • fit: loose, regular, fitted,
  • durability: standard, reinforced, maximum,
  • stretch: stiff, normal, flexible,
  • breathability: low, medium, high.

This presentation type is more readable than a plain text value, because it shows where the product is positioned relative to the other options.

Swatch lists

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:

  • sports uses,
  • technologies,
  • materials,
  • certificates,
  • functional features.

The customer gets a short list of values assigned to the product, enhanced with a visual element.

Lists with Amasty icons

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.

Sections from CMS blocks

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:

  • specification and features,
  • delivery information,
  • returns,
  • instructions for use,
  • educational content,
  • product-dependent messages.

This allows descriptive content to be managed through standard Magento CMS blocks and assigned only to selected products.

Technical data and text values

The module also supports typical attribute data:

  • short one-line text,
  • longer text description,
  • HTML block,
  • label-value layout,
  • parameters table,
  • single selected label,
  • text list,
  • badge and badge list.

This makes it possible to build both a simple section with a single parameter and a more advanced specification from multiple attributes.

Boolean values, dates, prices, and numbers

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.

Images

The module also supports image attributes:

  • single image,
  • image with label,
  • image grid.

This can be used to present technology icons, certificates, pictograms, product markings, or additional informational graphics.

Flexible appearance

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.

Example use cases

The module works especially well in stores where the product requires explanation:

  • sportswear and technical apparel,
  • sports equipment,
  • electronics,
  • products with certificates,
  • cosmetics and supplements,
  • home equipment,
  • B2B products with technical parameters,
  • catalogs with a large number of variants and features.

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,
  • CMS sections DeliveryReturns and Instructions for Use.

Summary

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.

Product Features - installation, configuration, and attribute management

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.

Installation

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.

Configuration location

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.

Product Features

Enabled

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.

Feature Sections

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.

Enabled

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.

Section Title

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.

Attribute Code

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_usageblocks_idmaterialtechnology_icon.

Attribute Codes

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 fitresistancestretch and breathability, all rendered as scales.

Display Type

Defines the presentation method for the attribute value.

An empty Auto value means automatic renderer selection:

  • blocks_id is rendered as cms_blocks,
  • swatch multiselect as swatch_list,
  • select with 2 or 3 options as scale,
  • select with more options as selected_label,
  • multiselect as text_list,
  • boolean as checkmark,
  • date as date,
  • price as price,
  • textarea as text_block,
  • image/media_image as image,
  • other types as text_inline.

Available types:

TypeUsage
scaleScale for a select attribute with 2 or 3 options.
swatch_listList of selected multiselect values with a Magento swatch.
multiselect_iconList of selected multiselect values with an Amasty ShopbyBrand / ShopbyBase icon.
cms_blocksSeparate sections created from CMS blocks assigned via blocks_id.
text_inlineShort text value.
text_blockLonger text.
html_blockHTML content from the attribute.
accordion_textHTML/text content in a collapsible section.
key_valueLabel-value rows.
tableTechnical data in a tabular layout.
selected_labelLabel of the selected select attribute option.
text_listText list of selected multiselect values.
badgeSingle value as a badge.
badge_listList of values as badges.
icon_valueSingle value with an icon.
icon_listList of values with icons.
swatch_gridSelected multiselect values in a swatch grid.
yes_noBoolean value as Yes or No.
checkmarkBoolean value as a positive feature; visible only for a true value.
dateDate formatted according to the store.
pricePrice formatted by Magento.
number_with_unitNumber with a unit.
range_barNumber as a range bar.
rating_dotsNumber as active level dots.
radial_chartFractional value, for example 4/6 or 7/10, as a radial chart with the attribute label.
imageSingle image from an image attribute.
image_with_labelImage with caption.
image_gridSeveral 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.

Sort Order

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.

Default State

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.

Hide Empty

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.

Appearance Profile

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 compacthighlight, or plain profile.

If the field is empty and the Use global appearance option is selected, the section uses the global appearance.

Recommended workflow:

  1. define the profile in Appearance Profiles,
  2. save the configuration,
  3. go back to Feature Sections,
  4. select the profile in the Appearance Profile column for the appropriate section.

CSS Class

Additional CSS class added to the section.

Usage: individual appearance customization in the frontend theme, for example product-features-section--technical.

Renderer Options JSON

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/64/67/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.

Appearance Profiles

List of optional appearance profiles that can be assigned to sections through the Appearance Profile field.

Code

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.

Label

Descriptive profile name visible to the administrator.

Usage: makes it easier to recognize the profile in configuration, for example CompactHighlightedNeutral. Combined with the code, it creates a clear label in the profile selection list in Feature Sections.

Background

Section background color for the profile.

Usage: highlight selected sections or match the theme.

Text

Primary text color in the section.

Heading

Section title color.

Accent

Accent color, for example active elements, scale dots, or highlights.

Accent Background

Background color of accent elements.

Border

Color of lines, separators, scale axes, and borders.

Icon

Color of the section expand and collapse icon.

Radius, e.g. 18px

Section corner rounding.

Examples: 08px18px.

Padding, e.g. 28px

Inner section spacing.

Examples: 16px24px28px.

Label Font Size, e.g. 21px

Font size of feature labels in the section.

Examples: 16px18px21px1.25rem.

Product Features Appearance

This group contains the global appearance of sections. The settings are converted into CSS variables and applied to the module wrapper.

Section Background Color

Section background color.

Default: #f4f4f4.

Section Text Color

Primary text color in the section.

Default: #000000.

Section Heading Color

Section heading color.

Default: #000000.

Muted Text Color

Color of supporting and less important text.

Default: #555555.

Accent Color

Color of active elements and highlights.

Default: #000000.

Accent Background Color

Background color of active elements, for example selections.

Default: #ffffff.

Border Color

Color of borders, separators, and scale axes.

Default: #9b9b9b.

Icon Color

Color of the + / - icon in the section heading.

Default: #000000.

Selected Text Color

Color of the selected value text.

Default: #000000.

Selected Font Weight

Font weight of the selected value.

Default: 700.

Examples: 400500600700bold.

Section Border Radius

Corner rounding of the section container.

Default: 18px.

Section Padding

Inner section spacing.

Default: 28px.

Section Gap

Spacing between sections.

Default: 16px.

Heading Font Size

Font size of the section heading.

Default: 20px.

Examples: 18px20px1.25remclamp(18px, 2vw, 22px).

Label Font Size

Font size of feature labels and value labels.

Default: 21px.

Body Font Size

Font size of the main section content.

Default: 16px.

Attribute management on the product side

The module does not create a separate product data system. It uses Magento product attributes, so content management takes place mainly in product editing.

Single product editing

  1. Go to Catalog > Products.
  2. Open the product for editing.
  3. Fill in the attributes used by the module sections.
  4. If the product should use CMS blocks, go to the Product Features group and set the CMS Blocks field.
  5. Save the product.
  6. Clear the cache if the project requires it.

The section will appear on the frontend only if:

  • the module is enabled,
  • the section is enabled in configuration,
  • the attribute exists,
  • the product has an attribute value,
  • the renderer can handle the selected value,
  • the section has not been hidden by Hide Empty.

Attribute blocks_id / CMS Blocks

During setup:upgrade, the module adds a product attribute:

  • code: blocks_id,
  • label: CMS Blocks,
  • type: text,
  • input: multiselect,
  • source model: active CMS blocks,
  • backend: standard Magento backend for multiselect,
  • scope: Store View,
  • group: Product Features,
  • visible in product editing,
  • available in the product grid and grid filtering.

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 Codeblocks_id,
  • Display Typecms_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.

CMS block management

Blocks used by blocks_id are created in the standard Magento way:

Content > Elements > Blocks

Recommendations:

  • use clear block titles because they may be visible as section titles,
  • assign blocks to the correct Store View,
  • set the block as active,
  • store descriptive content in blocks that should be shared by many products, such as delivery, returns, instructions, or technologies.

Mass product editing

The blocks_id attribute is prepared for use with mass product editing.

  1. Go to Catalog > Products.
  2. Select products in the grid.
  3. Choose the Update Attributes action.
  4. Set the value of the CMS Blocks field.
  5. Save the changes.

Usage: quickly assign the same CMS section, for example DeliveryReturns, or Care Instructions, to multiple products at the same time.

Attributes for scale

For the scale type, use select attributes with 2 or 3 active options.

Example:

  • attribute fit,
  • options: LooseRegularFitted.

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.

Multiselect attributes

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.

Magento swatches

If a multiselect attribute uses Magento swatches, you can use the swatch_list or swatch_grid type.

Usage:

  • technology icons,
  • colors,
  • use-case pictograms,
  • material markings.

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.

Amasty icons

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.

Text and HTML attributes

For short information, use text_inlinekey_value, or badge.

For longer descriptions, use text_blockaccordion_text, or html_block.

Note: html_block and accordion_text render HTML, so they should be used only for trusted admin content.

Numeric attributes

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}

Boolean attributes

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.

Image attributes

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.

Example configuration

Section with several scales:

FieldValue
EnabledYes
Section TitleProduct Features
Attribute Codesfitresistancestretchbreathability
Display Typescale
Sort Order10
Default StateExpanded
Hide EmptyYes

Use-case section with icons:

FieldValue
EnabledYes
Section TitleSports Use
Attribute Codesport_usage
Display Typemultiselect_icon
Sort Order20
Default StateCollapsed
Hide EmptyYes

CMS sections:

FieldValue
EnabledYes
Section TitleAdditional Information
Attribute Codeblocks_id
Display Typecms_blocks
Sort Order30
Default StateCollapsed
Hide EmptyYes

Troubleshooting

If a section does not appear on the frontend, check:

  • whether module Enabled is set to Yes,
  • whether the given section has Enabled = Yes,
  • whether the product has the attribute filled in,
  • whether the correct Attribute Code or Attribute Codes was selected,
  • whether the Display Type matches the attribute type,
  • whether Hide Empty is not hiding the empty section,
  • whether the attribute is available for the given Store View,
  • whether the CMS block is active and assigned to the correct Store View,
  • whether the Magento cache has been refreshed.
Write Your Own Review
You're reviewing:Extended Product Information
Your Rating
Products