Google Indexing API for Magento 2
€50.00 €50.00
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 leverages the power of the Magento catalog.
Blog categories are standard catalog categories, and a blog post is a product of the special type blog_post. This allows the blog to work closely with Magento mechanisms the store already has and that are well integrated with the frontend, SEO, store views, cache, and administration.
The most important feature of the module is the use of the Magento catalog as a content publishing engine.
The module adds a new product type:
blog_postThe blog_post type is based on the behavior of a virtual product, but it is not intended for sale. The post does not render price, cart, stock information, or shopping elements. From Magento's perspective, however, it remains a catalog entity, so it can use existing catalog features.
This approach combines two things:
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 direction. It uses what Magento already does well:
As a result, the blog is not a separate add-on, but a natural part of the Magento store.
Posts use Magento's native 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 removes product structured data where a post should not be treated as a sales product.
Blog categories are catalog categories. The administrator indicates one category as the blog root, and its subcategories become blog categories.
This makes it possible to create a logical content structure, for example:
The module does not require a separate blog category model or a separate base post model. This limits the amount of custom code and reduces the risk of conflicts with Magento mechanisms.
A blog post is created similarly to a product. The administrator works in a familiar Magento form, but with attributes tailored to content:
Because the post content is based on product attributes, you can use Magento's standard mechanisms for per-store-view values.
The post lead uses the native:
short_descriptionThe main post content uses the native:
descriptionThis simplifies translations and maintenance of multilingual content.
The module adds the blog_post product type, based on virtual product behavior. The type is intended for content publishing, not for sale.
During installation, a 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,In the module configuration, the administrator indicates the main blog category. This category is the blog homepage, and its subcategories are blog categories.
The module supports several list display variants:
Each variant can display the post image, title, publication date, author, lead, and a link to the post.
The post page renders content as an article, not as a sales product. The post template shows:
The module provides a blog sidebar with blocks:
The sidebar works with native Magento layouts:
1column,2columns-left,2columns-right.The administrator can set a separate layout for:
This allows the blog to have a different layout than standard product categories.
In many stores, additional blocks appear on product pages, for example lead time, supplier icons, comparison, wishlists, or stock information.
The module allows you to specify the names of layout blocks that should be removed only in the blog context. This makes it possible to keep a clean article view without affecting regular product pages.
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 a post is technically a Magento product, but for search engines it should be an article.
The module is a good choice for Magento stores that want to run a blog without building a separate content system.
It is particularly well suited for:
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.
Thanks to the blog_post product type, the blog gains the flexibility of editorial content while also benefiting from Magento's mature catalog mechanisms.
In many Magento stores, the blog has been running for years, but its current technology is becoming less convenient to maintain. Over time, there is a need to simplify the architecture, make better use of Magento's native mechanisms, and organize content without manually rewriting hundreds of posts.
Kowal_Blog solves this problem thanks to a migration mechanism from existing blog modules to a new model based on the Magento catalog.
This means that changing the blog does not have to mean losing previous editorial work or risking a sharp drop in search visibility.
The most important value for the client is simple: content that already exists can be transferred to the new solution without building everything from scratch.
Migration makes it possible to preserve and organize:
In practice, this means shorter implementation time, lower editorial risk, and a lower cost of moving to a new solution.
The migration mechanism was prepared with real Magento implementations in mind, where several well-known blog extensions are most commonly encountered.
Currently supported migrations are from:
Amasty Blog,Magefan Blog.This is important because these are the solutions often found in stores that developed the blog independently of the Magento catalog and now want to move it to a more consistent model.
One of the greatest advantages is that there is no need to manually recreate the blog.
Instead of:
you can perform a controlled migration to Kowal_Blog.
For the client's team, this means less operational work, and for the project, greater predictability.
When migrating a blog, one key question most often arises: what will happen to the existing URLs?
This is very valid, because old posts often:
That is why the migration mechanism in Kowal_Blog includes creating redirects for known post and tag URL structures. This makes it possible to move to a new URL model without leaving users and search engine crawlers on broken pages.
Additionally, the system generates reports on completed redirects and a separate URL collision report, so the implementation team can immediately see which paths were handled automatically and which require a decision.
Migration is not just a one-time data transfer. It is also a way to organize the foundation on which the store will continue to operate.
After migration, the blog moves to a model that uses Magento's native mechanisms, such as:
This simplifies long-term development and reduces the number of separate, custom layers that need to be maintained.
Not every store uses one of the most popular modules. Some implementations run on older extensions, custom solutions, or modified versions of modules available on the market.
That is why the migration mechanism was designed to be extensible.
This means that in addition to ready-made support for well-known Magento blogs, it is also possible to prepare migration:
From a sales perspective, this is a very important advantage. The client is not limited only to a list of ready-made integrations. If a custom blog is running in the store, a dedicated migration path can be prepared for its specific data and business process.
Migration of a blog to Kowal_Blog will be especially valuable for:
The client is not buying only a new blog module here.
They are buying the ability to move from the current solution to a model that is more consistent with Magento:
This shortens the path from the decision to change to the actual launch of the new blog and significantly lowers the barrier to entry for stores that already have a publication history.
This document describes the installation of the Kowal_Blog module and the meaning of configuration fields available in the Magento admin panel.
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-blogAdd the Composer repository:
composer config repositories.module.kowal.blog vcs https://github.com/kowalco/blogIf the repository is private, add the GitHub token:
composer config --global --auth github-oauth.github.com Install the module:
composer require kowal/module-blogEnable the module:
bin/magento module:enable Kowal_BlogRun upgrade:
bin/magento setup:upgradeClear cache:
bin/magento cache:flushIn production mode, additionally run:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento indexer:reindexDuring installation, the module creates:
blog_post product type,Blog Post attribute set,Catalog > CategoriesBlogBlog / GuidesBlog / NewsBlog / SEOurl_key.The configuration is located in:
Stores > Configuration > Kowal > BlogThe configuration is divided into three sections:
General,Design,Sidebar.Enables or disables the module on the frontend.
Values:
Yes - the module is active,No - the module does not add blog behavior.Indicates the main blog category.
The selected category serves two roles:
Example:
Default Category / BlogSubcategories under this category will be treated as blog categories.
The number of posts displayed on one listing page.
Example:
12The value must be a number greater than zero.
Specifies how the list of blog posts is presented.
Available values:
List - classic post list,Grid - 2 Columns - a 2-column grid,Grid - 3 Columns - a 3-column grid,Grid - 4 Columns - a 4-column grid.Each variant shows the post image, title, publication date, author, lead, and link to the post.
Determines whether posts with a future publication date should be visible in lists.
Values:
Yes - future posts are visible,No - future posts are hidden.Recommendation for production:
NoForces the page layout for the blog homepage and blog category pages.
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.
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.
A list of layout blocks that should be removed on blog category pages.
Enter one block name per line.
Example:
catalog.compare.sidebarwishlist_sidebarUse this field if external modules add product-specific elements to blog categories.
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.socialThis field is useful for hiding elements such as:
Enables the blog categories block in the sidebar.
The block shows categories under the configured blog root category.
Enables the recent posts block in the sidebar.
Posts are sorted by publication date.
Specifies the number of recent posts visible in the sidebar.
Example:
5Enables the tags block in the sidebar.
Tags come from the attribute:
blog_tagsThis is a multiselect type attribute.
Catalog > ProductsBlog PostBlog PostName - post title,SKU - technical identifier,URL Key - URL,Short Description - lead,Description - full content,Image - main image,Meta Title,Meta Description.Published At,Author Name,Post Format,Tags,Reading Level, if used,Featured, if the post should be featured.Each post should have unique:
Name,URL Key,Meta Title,Meta Description.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.
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 post name is used as a fallback.
The module renders images with the attributes:
alt,title,width,height.Read more links in lists are marked as:
rel='nofollow'The main indexable link remains the post title.
After installation and configuration, check:
BlogPosting, not Product,After configuration changes, it is worth running:
bin/magento cache:clean config layout block_html full_page