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

Kowal Blog for Magento 2 - a blog that leverages the power of the Magento catalog

€56.94 €46.29
COMPOSER Installation
M2-BLOG
PayPal PayPal
Przelew Przelew

Kowal_Blog is a blog module for Magento 2 designed differently from classic blog extensions. Instead of building a separate post system, separate categories, and separate routing, the module uses the potential of the Magento catalog.

Blog categories are standard catalog categories, and a blog post is a special product type blog_post. As a result, the blog works closely with Magento mechanisms that the store already has and that are well integrated with the frontend, SEO, store views, cache, and administration.

Unique concept

The key feature of the module is using the Magento catalog as the content publishing engine.

The module adds a new product type:

blog_post

The blog_post type is based on virtual product behavior, but it is not intended for sale. The post does not render price, cart, inventory information, or purchasing elements. From Magento's perspective, however, it remains a catalog entity, so it can use existing catalog features.

This approach combines two things:

  • the editorial nature of a blog,
  • the technical capabilities of the Magento catalog.

Why it matters

Many blog modules create a separate world next to Magento: separate post tables, separate categories, separate routing, separate SEO, and separate integrations. This often means more code, more exceptions, and more places that need to be maintained.

Kowal_Blog takes the opposite approach. It uses what Magento already does well:

  • catalog categories,
  • product-category relationships,
  • EAV attributes,
  • store views,
  • URL rewrites,
  • meta title and meta description,
  • sitemap,
  • cache,
  • page layouts,
  • product images,
  • translations,
  • standard admin forms.

As a result, the blog is not a separate add-on, but a natural part of the Magento store.

Business benefits

Consistent SEO with Magento

Posts use native Magento SEO fields:

  • url_key,
  • meta_title,
  • meta_description,
  • meta_keyword.

The module also generates structured data tailored to blog content, such as BlogPosting, CollectionPage, ItemList, and BreadcrumbList. At the same time, it eliminates product structured data where the post should not be treated as a sellable product.

Better use of store categories

Blog categories are catalog categories. The administrator selects one category as the blog root, and its subcategories become blog categories.

This allows you to create a logical content structure, for example:

  • Blog,
  • Blog / Guides,
  • Blog / News,
  • Blog / SEO,
  • Blog / Magento.

Less separate infrastructure

The module does not require a separate blog category model or a separate base post model. This reduces the amount of custom code and lowers the risk of conflicts with Magento mechanisms.

A familiar workflow for the administrator

A blog post is created similarly to a product. The administrator works with a familiar Magento form, but with attributes adapted to content:

  • publication date,
  • author,
  • post format,
  • tags,
  • reading level,
  • content source,
  • featured post status.

Store views and translations

Because post content is based on product attributes, you can use standard Magento mechanisms for per store view values.

The post lead uses the native:

short_description

The main post content uses the native:

description

This simplifies translations and the maintenance of multilingual content.

Module features

Blog Post product type

The module adds the blog_post product type, based on virtual product behavior. The type is intended for publishing content, not for sales.

Blog Post attribute set

During installation, the Blog Post attribute set is created, containing native Magento fields and additional editorial fields.

The module uses existing Magento attributes where it makes sense:

  • name as the post title,
  • short_description as the lead,
  • description as the content,
  • image as the main image,
  • url_key as the URL,
  • native meta fields for SEO.

Blog categories from the Magento catalog

In the module configuration, the administrator selects the main blog category. This category is the blog home page, and its subcategories are blog categories.

Post list

The module supports several list display variants:

  • list,
  • 2-column grid,
  • 3-column grid,
  • 4-column grid.

Each variant can display the post image, title, publication date, author, lead, and link to the post.

Post view

The post page renders the content as an article, not as a sellable product. The post template shows:

  • title,
  • publication date,
  • author,
  • main image,
  • lead,
  • full content,
  • tags.

The module provides a blog sidebar with blocks:

  • blog categories,
  • recent posts,
  • tags.

The sidebar works with native Magento layouts:

  • 1column,
  • 2columns-left,
  • 2columns-right.

Forcing the page layout

The administrator can set a separate layout for:

  • blog categories,
  • post pages.

This allows the blog to have a layout different from standard product categories.

Blocking elements from other modules

In many stores, additional blocks appear on product pages, such as lead time, supplier icons, compare, wishlists, or inventory information.

The module lets you specify layout block names that should be removed only in the blog context. This helps maintain a clean article view without affecting regular product pages.

Structured data

The module generates structured data appropriate for a blog:

  • BlogPosting for a post,
  • CollectionPage and ItemList for lists,
  • BreadcrumbList for navigation.

This is important because the post is technically a Magento product, but for search engines it should be an article.

Who this module is for

The module is a good choice for Magento stores that want to run a blog without building a separate content system.

It is especially well suited for:

  • stores that work heavily with SEO,
  • multilingual stores,
  • projects with an extensive catalog,
  • brands publishing guides and expert content,
  • implementations where the blog should be an integral part of the store, not a separate add-on.

The key advantage

The biggest advantage of the module is that it does not try to replace Magento with a separate blog CMS. Instead, it uses the Magento catalog as a solid foundation for content.

With the blog_post product type, the blog gains the flexibility of editorial content while also benefiting from Magento's mature catalog mechanisms.

Installing and configuring the Kowal Blog module

This document describes the installation of the Kowal_Blog module and the meaning of the configuration fields available in the Magento admin panel.

Requirements

The module is intended for Magento 2.4.x.

Required Magento modules:

  • Magento_Catalog,
  • Magento_CatalogUrlRewrite,
  • Magento_Eav,
  • Magento_Store.

The module is installed as a Composer package:

kowal/module-blog

Installation with Composer

Add the Composer repository:

composer config repositories.module.kowal.blog vcs https://github.com/kowalco/blog

If the repository is private, add a GitHub token:

composer config --global --auth github-oauth.github.com 

Install the module:

composer require kowal/module-blog

Enable the module:

bin/magento module:enable Kowal_Blog

Run the upgrade:

bin/magento setup:upgrade

Flush the cache:

bin/magento cache:flush

In production mode, also run:

bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento indexer:reindex

What the installation creates

During installation, the module creates:

  • the blog_post product type,
  • the Blog Post attribute set,
  • editorial post attributes,
  • configuration in the Magento admin panel,
  • frontend blocks,
  • templates for the list, post, sidebar, and structured data.

Preparing blog categories

  1. Go to:
Catalog > Categories
  1. Create a category that will be the blog home page, for example:
Blog
  1. Under this category, create blog subcategories, for example:
Blog / PoradnikiBlog / AktualnościBlog / SEO
  1. Make sure the categories are active and have a correct url_key.

Module configuration

The configuration is located in:

Stores > Configuration > Kowal > Blog

The configuration is divided into three sections:

  • General,
  • Design,
  • Sidebar.

General

Enabled

Enables or disables the module on the frontend.

Values:

  • Yes - the module works,
  • No - the module does not add blog behavior.

Blog Root Category

Specifies the main blog category.

The selected category has two roles:

  • it is the blog home page,
  • it is the root for blog subcategories.

Example:

Default Category / Blog

Subcategories located under this category will be treated as blog categories.

Posts Per Page

The number of posts displayed on one listing page.

Example:

12

The value must be a number greater than zero.

Post List Display Mode

Defines how the blog post list is presented.

Available values:

  • List - classic post list,
  • Grid - 2 Columns - 2-column grid,
  • Grid - 3 Columns - 3-column grid,
  • Grid - 4 Columns - 4-column grid.

Each variant shows the post image, title, publication date, author, lead, and link to the post.

Show Future Posts

Determines whether posts with a future publication date should be visible on lists.

Values:

  • Yes - future posts are visible,
  • No - future posts are hidden.

Recommendation for production:

No

Design

Blog Category Page Layout

Forces the page layout for the blog home page and blog categories.

Available values:

  • Use Magento Default,
  • 1 Column,
  • 2 Columns with Left Sidebar,
  • 2 Columns with Right Sidebar.

If you select a two-column layout, the blog sidebar will be rendered according to the selected side.

Blog Post Page Layout

Forces the page layout for a blog post.

Available values:

  • Use Magento Default,
  • 1 Column,
  • 2 Columns with Left Sidebar,
  • 2 Columns with Right Sidebar.

This setting is useful when blog posts should have a different layout than regular products.

Remove Blocks on Blog Categories

A list of layout blocks that should be removed on blog category pages.

Enter one block name per line.

Example:

catalog.compare.sidebarwishlist_sidebar

Use this field if external modules add product-specific elements to blog categories.

Remove Blocks on Blog Posts

A list of layout blocks that should be removed on blog post pages.

Enter one block name per line.

Example:

catalog.compare.sidebarwishlist_sidebarproduct.info.upsellcatalog.product.relatedproduct.info.reviewproduct.info.social

This field is useful for hiding elements such as:

  • compare,
  • wishlist,
  • related products,
  • product reviews,
  • supplier icons,
  • order lead time,
  • inventory information,
  • other blocks from product modules.

Show Blog Categories

Enables the blog categories block in the sidebar.

The block shows categories located under the configured blog root category.

Show Recent Posts

Enables the recent posts block in the sidebar.

Posts are sorted by publication date.

Recent Posts Limit

Defines the number of recent posts visible in the sidebar.

Example:

5

Show Tags

Enables the tags block in the sidebar.

Tags come from the attribute:

blog_tags

This is a multiselect attribute.

Creating a post

  1. Go to:
Catalog > Products
  1. Create a new product of type:
Blog Post
  1. Select the attribute set:
Blog Post
  1. Fill in the basic fields:
  • Name - post title,
  • SKU - technical identifier,
  • URL Key - URL address,
  • Short Description - lead,
  • Description - full content,
  • Image - main image,
  • Meta Title,
  • Meta Description.
  1. Fill in the blog fields:
  • Published At,
  • Author Name,
  • Post Format,
  • Tags,
  • Reading Level, if used,
  • Featured, if the post should be featured.
  1. Assign the post to a category located under the blog root category.

SEO recommendations

Titles and metadata

Each post should have unique:

  • Name,
  • URL Key,
  • Meta Title,
  • Meta Description.

Lead and content

The Short Description field should be a short, unique lead, not a copy of the first paragraph of the content.

The Description field should contain the full post content with a logical heading structure.

Images

The post image should have a meaningful label, because the module uses it as alt and title. If the image label is not set, the fallback is the post name.

The module renders images with the following attributes:

  • alt,
  • title,
  • width,
  • height.

Read more links

Read more links on lists are marked as:

rel='nofollow'

The post title remains the main indexable link.

Verification after configuration

After installation and configuration, check:

  • whether the blog root category displays the post list,
  • whether blog subcategories show the correct posts,
  • whether regular store categories do not show blog posts,
  • whether the post does not show price, cart, or stock status,
  • whether the sidebar shows the expected blocks,
  • whether the structured data is of type BlogPosting, not Product,
  • whether the sitemap and URL rewrites work correctly,
  • whether the cache does not show the old layout after changing the configuration.

After configuration changes, it is worth running:

bin/magento cache:clean config layout block_html full_page
Write Your Own Review
You're reviewing:Kowal Blog for Magento 2 - a blog that leverages the power of the Magento catalog
Your Rating
Products