Blog
v2.6.2
Blog
- Mises à jour et support inclus pendant 12 mois
- Clé de licence livrée immédiatement par email
- Garantie satisfait ou remboursé 30 jours
- Documentation complète incluse
- Compatible avec les thèmes Hyvä
- Installation prête pour Composer
Blog
Animez un véritable blog éditorial directement dans Magento — pas de WordPress en parallèle, pas de SaaS tiers, pas d'hébergement supplémentaire. Ce module apporte la gestion complète des posts, catégories, auteurs, tags et commentaires dans l'admin Magento, avec un contenu multi-store et multi-langue scopé par store view, des URLs propres pour le SEO, un flux RSS, des sitemap providers, des API REST et GraphQL, et un importeur WordPress intégré pour migrer un blog existant en une seule commande.
Pensé pour les marchands qui traitent le contenu comme un canal de vente — lancements produits, guides d'achat, base de connaissances, brand storytelling — sans l'overhead opérationnel d'un second CMS.
À qui ça s'adresse
- Marchands qui veulent héberger leur blog sur le même domaine que la boutique (une seule autorité SEO, une seule stack analytics, une seule infra)
- Boutiques multi-store / multi-langue qui doivent traduire chaque post, catégorie, auteur et meta par store view
- Équipes qui migrent un blog WordPress existant vers Magento sans perdre posts, auteurs, tags ou commentaires
- Agences qui ont besoin d'un blog piloté par REST/GraphQL pour des frontends headless et applications mobiles
Bénéfices clés
- Workflow éditorial complet — posts avec contenu riche, image à la une, extrait, publication programmée, estimation du temps de lecture, compteur de vues ; catégories avec image ; tags via pivot many-to-many ; auteurs en entité de premier rang avec photo, bio, liens sociaux et slug/meta par store.
- Multi-store et multi-langue nativement — titres, slugs, descriptions et meta sont scopables par store view. Les URLs se présentent en
/{category-slug}/{post-slug}et s'adaptent automatiquement au changement de store. - Comments natifs avec modération et anti-spam — trois modes de modération (approve all / moderate all / moderate first only), honeypot, rate limiting par IP, reCAPTCHA v3 optionnel, grid admin avec actions de masse, toggle pour les commentaires invités.
- SEO et découvrabilité — URLs propres par store view, identity tags FPC pour ne flusher que les entrées de cache concernées à la sauvegarde, sitemap providers, flux RSS 2.0 à
/blog/rss, full-text search MySQL/MariaDB sur titre + extrait + contenu avec fallback LIKE et page de résultats dédiée/blog/search. - REST API et GraphQL — endpoints public-read / admin-write pour posts, catégories, auteurs et commentaires (
/rest/V1/wimakeit-blog/*), plus des queries GraphQL et une mutationwimakeitBlogCreateCommentpour les frontends headless. - Import WordPress en une commande —
bin/magento wimakeit:blog:import-wp --file=wp-export.xmlmappe auteurs, catégories, tags, posts et commentaires, avec--download-imageset--dry-runoptionnels. - CMS widget — déposez un widget "Latest Posts" n'importe où, avec filtre par catégorie et toggles individuels image/extrait/date.
Compatibilité
- Magento 2.4.x / équivalent Mage-OS
- PHP 8.1, 8.2, 8.3
- Nécessite
wimakeit/module-core^3.0 etwimakeit/module-page-builder^1.4 - Sequence automatiquement
Magento_WidgetetMagento_GraphQl - Traductions livrées : en_US, fr_FR, nl_NL, it_IT, es_ES
Installez ce module via Composer. Assurez-vous que votre auth.json est configuré avec vos identifiants Wimakeit.
$ composer require wimakeit/module-blog:^2.6.2
$ 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 dependencies
| Package | Minimum |
|---|---|
wimakeit/module-core | ^3.0 |
wimakeit/module-page-builder | ^1.4 |
Both are pulled automatically from the Wimakeit registry as long as it is declared in your project's composer.json.
Module sequencing
The module declares a <sequence> on Magento_Widget (for the CMS widget) and Magento_GraphQl (for the GraphQL schema) — no manual action needed, Magento resolves the load order at setup:upgrade.
ACL permissions
After installation, five ACL resources are available under System → Permissions → User Roles, nested under Content:
| Resource | Default |
|---|---|
Wimakeit_Blog::post (manage posts) | granted to Administrator role only |
Wimakeit_Blog::category (manage categories) | granted to Administrator role only |
Wimakeit_Blog::author (manage authors) | granted to Administrator role only |
Wimakeit_Blog::tag (manage tags) | granted to Administrator role only |
Wimakeit_Blog::comment (moderate comments) | granted to Administrator role only |
A separate Wimakeit_Blog::config lives under Stores → Configuration for module settings access.
Schema patches
setup:upgrade runs the following one-shot migrations the first time the module is enabled. On a large legacy blog they can take a few seconds:
- backfill of authors from existing
post.author_id/admin_userrows - seed of the
wimakeit_blog_post_categorypivot from existing primary categories - creation of the MySQL/MariaDB FULLTEXT index on
wimakeit_blog_post_store - creation of secondary indexes on
wimakeit_blog_post_tag(tag_id),wimakeit_blog_post_store(store_id),wimakeit_blog_comment(parent_id),wimakeit_blog_post(author_id)(since 2.4.0) - addition of
default_sort_fieldanddefault_sort_directioncolumns onwimakeit_blog_category(since 2.5.0)
Configuration
The module ships with sensible defaults. Go to Stores > Configuration > WiMakeIT > Blog only if you want to change them.
Comments
| Setting | Default |
|---|---|
| Enable Comments | Yes |
| Moderation Mode | Moderate all |
| Allow Guest Comments | Yes |
| Moderation Notification Email | (blank — disabled) |
| Rate Limit (seconds between comments per IP) | 30 |
| reCAPTCHA v3 Site Key | (blank — disabled) |
| reCAPTCHA v3 Secret Key | (blank) |
| reCAPTCHA v3 Minimum Score | 0.5 |
Moderation Mode options: Approve all (publish immediately) / Moderate all (hold every comment) / Moderate first, then auto-approve (only the visitor's first comment needs approval).
Per-category settings
Each category has its own default sort (Content > Blog > Categories, edit a category):
| Setting | Default |
|---|---|
| Default Sort Field | Publish Date (options: Publish Date, Title, Author, View Count, Manual Position) |
| Default Sort Direction | Descending |
Visitors can override the default via the sort tabs on the category page (?sort=field-direction).
Routes and feeds
| URL | Description |
|---|---|
/{category-slug}/{post-slug} | Post detail page |
/{category-slug} | Category listing page |
/blog/tag/{slug} | Tag landing page (all posts carrying the tag) |
/blog/author/{slug} | Author page |
/blog/search?q=… (optional cat={id}) | Full-text search results, optionally scoped to a category |
/blog/rss (optional category_id=X) | RSS 2.0 feed |
/wimakeit_blog/post/trackView | View-counter beacon (POST, called by the post page JS) |
/rest/V1/wimakeit-blog/* | REST endpoints (admin ACL required) |
REST endpoints all require the matching Wimakeit_Blog::* admin ACL — they are not anonymous. If you need a public read API, expose your own controller backed by a repository that filters is_active = 1.
Featured-image uploads
The Post and Category forms accept JPG, JPEG, PNG, GIF, WEBP up to 2 MB. Uploads are validated by both file extension and actual MIME content (mime_content_type / finfo), so a renamed PHP file is rejected. Saved paths are restricted to pub/media/wimakeit/blog/.
WordPress import (one-shot)
bin/magento wimakeit:blog:import-wp \
--file=wp-export.xml \
--store=1 \
--default-category=2 \
--download-images \
--dry-run
Run with --dry-run first to validate the mapping. Drop the flag for the real import. Comments are inserted in batches of 250 rows; attachments are pre-indexed so the importer scales to multi-thousand-post WXR files.
Companion module (optional)
To keep the admin dashboard widget after upgrading from 2.1.x, install alongside:
composer require wimakeit/module-blog-admin-dashboard
The widget was extracted in 2.2.2 so the core blog module stays installable on stores that don't use wimakeit/module-admin-dashboard.
- Version
- v2.6.2
- Licence
- Abonnement annuel
- Support
- 12 mois
- Dernière mise à jour
- 5 juin 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ä
- Compatible
- Package
-
wimakeit/module-blog
Vérifier la compatibilité
Indiquez votre stack pour vérifier la compatibilité du module.
Compatibilité 4
Tarification & licence 4
vendor/wimakeit/ après composer require, donc vous pouvez le lire, l'auditer, et le patcher localement pour votre propre installation Magento. Vous ne pouvez PAS le redistribuer, le sous-licencier, le publier sur un registre Composer public, ou le revendre. 1 licence = 1 domaine production + 1 domaine staging/dev (voir les Conditions Générales pour l'EULA complet). Les modules Wimakeit ne sont PAS sur le packagist.org public — ils sont distribués exclusivement via le registre Composer privé packages.wimakeit.be. Installation & mises à jour 6
composer require wimakeit/module-blog:^2.6.0, puis bin/magento setup:upgrade, bin/magento setup:di:compile, et enfin bin/magento cache:flush. L'onglet « Installation » de cette page liste chaque étape de configuration (ACLs, crons, valeurs par défaut) — un déploiement prend quelques minutes, pas des heures. Besoin d'aide ? Wimakeit propose des prestations d'installation Magento depuis notre bureau wallon (Presles, entre Charleroi et Namur). auth.json : {"http-basic": {"packages.wimakeit.be": {"username": "VOTRE-EMAIL", "password": "VOTRE-TOKEN"}}}. Étape 3 : enregistrez le repo : composer config repositories.wimakeit composer https://packages.wimakeit.be. Étape 4 : composer require wimakeit/module-blog:^2.6.0. Dans les pipelines CI/CD, injectez COMPOSER_AUTH en variable d'environnement JSON pour éviter de commiter auth.json. composer require, même code module, même schéma de base — pas de fork à maintenir, pas de changement de licence. composer update reste sûr à l'intérieur d'une version majeure. app/design/frontend/{VotreVendor}/{theme}/Wimakeit_{Module}/templates/ en respectant le même chemin relatif. Blocks, ViewModels et Helpers s'override via DI preference dans votre propre module custom — déclarez <preference for="Wimakeit\…\OriginalClass" type="VotreVendor\Override\Class" /> dans etc/di.xml. Le XML layout s'étend (préféré) ou s'override de manière standard Magento. Les modules Wimakeit n'utilisent jamais le keyword final sur les classes que vous pourriez raisonnablement vouloir override — surcharger est un scénario de premier ordre, pas un hack. Support & sécurité 3
contact@wimakeit.com avec le nom du module, sa version, votre version Magento/Mage-OS et les étapes pour reproduire. Les correctifs sont livrés dans le prochain patch. Le support Wimakeit répond en français, anglais et néerlandais en jours ouvrables (horaires CET). contact@wimakeit.com avec le préfixe [SECURITY] dans l'objet — précisez le module, la version et les étapes de reproduction. Accusé de réception en jours ouvrables, mention dans le Changelog sur souhait du déclarant. Wimakeit est une SRL belge (société à responsabilité limitée) soumise au droit belge et européen sur la vie privée et la divulgation responsable. À propos de Wimakeit 1
Quelque chose n'est pas couvert par la FAQ ?
Signalez un bug ou posez une question — le formulaire est pré-rempli avec ce module.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[2.6.0] - 2026-05-25
Security + perf hardening pass following the 2026-05-25 audit. All high-severity security findings + the actionable high-impact perf findings are resolved. No change to public URLs, REST/GraphQL contracts or admin layouts.
Security
- SQL column-injection closed in every admin grid — the four listing data providers (
Post,Author,Category,Comment) now whitelist sort/filter column names. A craftedsorting[field]=id,SLEEP(5)--from an authenticated admin no longer reaches the DB. - Path-traversal closed on Category
featured_imageand Authorphoto— the same sanitiser that already protectedPost.featured_image(extracted intoMediaPathSanitizer) now rejects anything that isn't a relative path underwimakeit/blog/on the other two admin Save controllers. - XSS closed in the BreadcrumbList JSON-LD on category pages —
json_encodenow emitsJSON_HEX_*flags. A category name containing</script>can no longer break out of the script tag. Same fix already shipped for post pages in 2.4.0. - SSRF closed in
bin/magento wimakeit:blog:import-wp --download-images— the image downloader now validates the URL scheme, resolves the hostname and rejects private/reserved IPs (cloud metadata, internal services,127/8,10/8, …), usescurlwith bounded timeouts and no redirect-follow, caps the response at 10 MB, and sanitises the saved filename. The CLI also rejects--file=paths outside the Magento install (BP). - XXE mitigated on the WP import XML parser (
LIBXML_NONETadded). - Imported comments are now PENDING regardless of
wp:comment_approved— source DBs are untrusted, moderators review each carried-over comment. - Comment rate-limiter no longer bypassable when the source IP is unavailable (was returning "not limited", now returns "limited" — fail-closed).
- Author social URLs sanitised at write-time — only
http(s)://is persisted. Storedjavascript:/data:URIs can no longer leak into the public profile or the GraphQL resolver. - GraphQL
BlogAuthorresolver lists columns explicitly —emailandadmin_user_idare excluded from the SELECT so they can never leak even if the GraphQL schema is extended. - Post-view counter (
TrackView) enforces same-origin Origin/Referer in addition to the session debounce. External<img>/<iframe>payloads can no longer inflate view counts cross-site. - Category
default_sort_directionis whitelisted toASC/DESCon save.
Perf
- TrackView is now a single UPDATE (was SELECT-EXISTS + UPDATE) — saves one round-trip per published beacon hit.
- Post view controller skips the mediumtext
contentcolumn when building the page metas (canonical, OG, hreflang, breadcrumbs). The full content is loaded once, by the ViewModel that actually renders it. - GraphQL
BlogCategoriesresolver lists columns explicitly — dropsSELECT c.so featured_image, default_sort_, timestamps are no longer transferred when not requested. - Pagination clamped to 1000 pages on
/blog/searchand/blog/tag/{slug}— blocks?p=999999DoS via deep OFFSET.
DB
- Composite
(tag_id, post_id)index onwimakeit_blog_post_tag— tag-grouped JOINs (category tag pills, sitemap provider, related-by-tag) now resolvepost_idindex-only. - Composite
(category_id, position)index onwimakeit_blog_post— speeds up previous/next-post lookups on the post view. (updated_at)index onwimakeit_blog_post— used by the tag/author sitemap providers'GROUP BY + MAX(updated_at).- Run
bin/magento setup:upgradeafter composer update so the new indexes get created.
Notes
- The constructor of the three admin Save controllers gained one extra dependency (
MediaPathSanitizer);Post/TrackViewgained two (StoreManagerInterface,BotDetector). All auto-injected via DI — nodi.xmlchange is required in consumer projects.
[2.5.6] - 2026-05-25
Feature
- Author pages now have a canonical + breadcrumbs + Open Graph block — every
/blog/author/{slug}declaresrel="canonical"to the same URL the sitemap emits, renders aHome > Author Nametrail and exposesog:url,og:type=profile,og:title,og:description,og:site_name. Author pages were previously SEO-orphan.
Fix
- Post breadcrumb shows the full title — the 40-char / em-dash truncation that turned long titles into something like "Pharmamed" in the breadcrumb is gone. The crumb now matches the H1 and the slug visible in the URL.
[2.5.5] - 2026-05-24
Feature
- Tag pages now in the XML sitemap — every
/blog/tag/{slug}is added by a new sitemap item provider, restricted to tags that have at least one active + published post on the current store. Priority0.5, change-frequencyweekly. SEO crawlers can discover the tag landings without a manual sitemap edit. - Author pages now in the XML sitemap — same treatment for
/blog/author/{slug}: only authors with at least one published post visible on the store, per-store-view slug fromwimakeit_blog_author_store. Priority0.5, change-frequencyweekly.
[2.5.4] - 2026-05-22
Feature
- Tag pills with article counts on every category landing — below the search form, render the active tags for that category as orange pills, each suffixed with a compact numeric badge (e.g.
#Magento 25,#Sécurité 6). Sorted by post count DESC. New ViewModel method joinswimakeit_blog_tag↔_post_tag↔_post↔_post_categoryand filters published + active posts only. - Tags moved to the top of the post page — the
#tagrow sits directly under the hero meta (date / reading time) instead of next to the Share buttons at the bottom. Visitors see the topic at a glance before scrolling.
Admin
- Category card CTA is now context-aware in three branches — services keep "Learn more", news categories (
actualites,news,nieuws,blog) say "Read the article" / "Lire l'article" / "Lees het artikel", every other category (projects, references…) keeps "Read the case study". Same rule extended to the count noun in the hero (30 articlesvs30 projets).
[2.5.3] - 2026-05-22
Feature
.blog-tldrcallout class — write<div class="blog-tldr"><ul><li>…</li></ul></div>and the "TL;DR" label is auto-prepended, the box gets the brand-orange left border and a light tint, bullets are tightly aligned. No more hand-written<p class="font-semibold">TL;DR</p>header in every article.- Inline
<code>and CLI<pre>styled in brand orange —<code>renders as smaller monospace in#EF7013on a soft orange tint, matching the marketplace PDP changelog/install code styling. Fenced<pre>blocks get the same tint with a 3 px orange left border and horizontal scroll for long shell one-liners.
Fix
- Blog content list bullets —
<ul>/<ol>inside post content lost their bullets after Hyvä's Tailwind preflight reset (list-style: none; padding: 0). Restoredlist-style: disc/decimal,padding-left: 1.5remand brand-orange::marker. Bullets are now visible and properly indented in every post body.
[2.5.2] - 2026-05-22
Feature
- Sticky table of contents on the left — long-form posts now show a 280 px lateral TOC on desktop (
≥ 1024 px), pinned withposition: sticky; top: 90px, so readers keep their place while scrolling. Rendered only when the JS detects at least 3 headings. Stacks above the content on tablet/mobile. - TOC visual refresh — switched to a numbered
<ol>with1.,2., … prefixes; H3s indented under their parent. White rounded card with subtle border and shadow; hover paints the row light grey; the active section is brand orange#EF7013on a 10% orange tint — same treatment as the front-end/fr/checkmo-availability#how-it-worksSommaire.
[2.5.1] - 2026-05-22
Fix
- Admin Tag listing now loads — missing
<updateUrl path="mui/index/render"/>on the listing data source made the grid AJAX fall through to the default render endpoint and the UI showed "Something went wrong with processing the default view…". Same patch as the 2.2.4 author/comment fix; Tags were introduced in 2.4.0 and missed it. - Post save accepts locale-formatted publish dates — saving a post with a French date picker (
22/05/2026) raisedDateMalformedStringExceptiondeep inPdo\Mysql::formatDate()and surfaced as "Could not save blog post: Failed to parse time string (22/05/2026)…". The admin Post Save now runspublish_datethroughStdlib\DateTime\Filter\Date, which parses with the current locale and returns the MySQL-compatibleY-m-dformat.
[2.5.0] - 2026-05-22
Feature
- Per-category default sort in admin: pick the field (publish date, title, author, view count, manual position) and direction (ASC/DESC) used when a visitor opens the category without an explicit sort.
- Sort tabs on the category page — Most recent / Oldest / Most read / Title A-Z / Z-A / Author A-Z. Active tab highlighted; pagination links preserve the
?sort=selection. - Real category-scoped search — the search input on the category hero now submits to
/blog/search?q=…&cat={id}instead of a JS-only filter on the current page. Placeholder is category-aware ("Search in {Category}…") and the results page shows the active scope with a one-click escape to "Search all categories". - Locale-aware dates — every blog date (post hero, category cards, related posts, author page, Latest Posts widget) now renders in the store's locale via
IntlDateFormatter. A FR store sees "17 mai 2026" instead of "17 May 2026".
Admin
- New category settings
Default Sort FieldandDefault Sort Directionunder Content > Blog > Categories.
[2.4.0] - 2026-05-22
Security
- REST endpoints under
/rest/V1/wimakeit-blog/*now all require the matching admin ACL (previously anonymous). Closes draft-post enumeration viafilter[is_active][eq]=0and a public leak ofauthor.email. - GraphQL:
WimakeitBlogAuthor.emailremoved from the public type.wimakeitBlogCreateCommentnow applies the same post-existence, parent integrity, rate-limit and reCAPTCHA enforcement as the HTTP form via a shared service. - Comment submit: every payload is validated (post must exist and be active, parent must belong to the same post and be approved, reply depth capped at 2). Author website URLs are restricted to
http(s)schemes both at write time and at display time on author / comment pages. - Featured-image uploads: extension whitelist now backed by a real MIME-content check (
mime_content_type/finfo), so ashell.jpgwith PHP bytes is rejected. - Featured-image save path is sanitized to only accept
wimakeit/blog/-prefixed relative paths (blocks..traversal and absolute paths). - Admin Post Save now intersects
category_ids/tag_idsagainst the DB before inserting pivots — orphan rows can no longer be smuggled in via crafted POST. - Admin Author Save validates
admin_user_idagainstadmin_user.user_id. - Post template
<script>blocks renderjson_encodewithJSON_HEX_TAGflags — closes a stored-XSS path through a crafted post slug. - Store switcher rebuilds the redirect URL from the target store's base URL instead of trusting the incoming host.
- Comment submit no longer leaks raw exception messages to the visitor.
- New
Wimakeit_Blog::tagACL resource for the tags CRUD.
Feature
- Tags CRUD in admin under Content > Blog > Tags (listing, edit, slug auto-generated) and
tag_idsmultiselect on the post form. - Public tag page at
/blog/tag/{slug}— paginated listing of every post that carries the tag for the current store. - Tags rendered on the post view are now clickable links to their tag page.
Perf
view_countdecoupled from the request path — incremented out-of-band via a JS beacon hittingController/Post/TrackView, so Full Page Cache can serve the post page without the synchronousUPDATE. Session-debounced so the same visitor counts once per session.- N+1 killed in the category listing: post specs are now batch-loaded for the whole page in one query instead of one per card.
getIdentities()on the category and Latest Posts widget no longer issue SQL — they used to JOIN three tables on every FPC cache-tag check, including cache hits.- Hreflang generation on the post page batched into one
IN (?)lookup per table (was 2 × N queries with N stores). ViewModel/PostViewmemoizes category, author, tags and related posts per request — duplicate calls inside the same render are free now.ViewModel/PostList/TagListno longer pull thecontentmediumtext column for listing queries;getTotalCount()memoized so paged listings don't run the COUNT twice.- GraphQL
BlogPostsresolver inspects the requested fields and only joinsps.contentwhen the query actually asks for it. - New DB indexes on
wimakeit_blog_post_tag(tag_id),wimakeit_blog_post_store(store_id),wimakeit_blog_comment(parent_id),wimakeit_blog_post(author_id). Ui/DataProvider/Post/ListingDataProviderusesCOUNT(DISTINCT main.id)so admin grid pagination no longer drifts from the JOIN multiplier.- WordPress importer: comments are inserted via
insertMultiplein batches of 250 (was one ORM save per row), and the attachment lookup is pre-indexed once (was O(n) per post). - Sitemap provider batches the post fetch in 500-row pages so the cron stays within memory limits on large catalogs.
- Category and post templates: ~400 lines of inline CSS extracted to
view/frontend/web/css/blog.css— smaller FPC payload, browser-cacheable styles, CSP-compatible.
Admin
og:site_namenow resolves to the store name (was hardcoded).- All admin controllers normalized to
public const ADMIN_RESOURCEand everyexecute()declares aResultInterfacereturn type.
[2.2.4] - 2026-05-19
Fix
- Admin Authors and Comments grids no longer break on load with the "Something went wrong with processing the default view" error — the listings now declare the
mui/index/renderupdateUrl so bookmark, filter, paging and sorting AJAX calls hit the standard UI renderer instead of resolving to/undefined.
[2.2.2] - 2026-05-12
Admin
- Dashboard widget extracted to companion module
wimakeit/module-blog-admin-dashboard. The main module is now installable on stores that don't usewimakeit/module-admin-dashboard.
Deps
- To keep the dashboard widget, install
wimakeit/module-blog-admin-dashboardalongside this module.
[2.2.0] - 2026-05-09
Feature
- Per-store builder canvas inside each FR/EN/NL fieldset of the post form. Editors compose post content visually through
wimakeit/module-page-builderinstead of a raw HTML textarea.
Admin
- Switched to the shared Wimakeit PageBuilder helpers; persists per-store builder state alongside the rendered HTML.
Deps
- Requires
wimakeit/module-page-builder^1.4.
[2.1.0] - 2026-05-05
Feature
- Native Magento Page Builder replaced by
wimakeit/module-page-builderfor post content. Better multi-store handling and a lighter editor footprint.
[2.0.1] - 2026-03-15
Fix
- Featured-image fields in post/category/author edit forms now render the existing image instead of staying empty — the fileUploader UI component receives the proper array shape on load.
- Page Builder / WYSIWYG no longer crashes the admin with a
LocalizedExceptionon every load — invalid<value>elements removed frometc/widget.xml(defaults now resolved in the LatestPosts block). - Featured-image uploads from the post and category forms no longer 404 — added the missing upload controllers for the
wimakeit_blog/post/uploadandwimakeit_blog/category/uploadroutes.
[2.0.0] - 2026-03-10
Feature
- New Authors entity (tables
wimakeit_blog_author+wimakeit_blog_author_store): photo, email, bio, title, per-store slug and meta, social links. Admin CRUD under Content > Blog > Authors and frontend page at/blog/author/{slug}. - New Comments with moderation and anti-spam: DB-backed comments, per-post listing, reply threading, honeypot, IP rate limiting, optional reCAPTCHA v3, three moderation modes (approve all / moderate all / moderate first only). Admin grid under Content > Blog > Comments with mass actions (approve / pending / spam / trash / delete). Guest commenting toggle.
- New CMS widget
Blog - Latest Postswith widget title, post limit, category filter and per-toggle image/excerpt/date. - New multi-category support via pivot
wimakeit_blog_post_category. Primary category stays onpost.category_id(canonical URL); migration patch seeds the pivot from existing data. - Tag persistence from the post form (
tag_idsinput) — the pivot existed but was never wired. - New view counter on post view (skips bots via User-Agent, skips
?preview=1). - Related posts now rank by shared tag overlap first, then same category, then recency (previously same category only).
- New WordPress import CLI:
bin/magento wimakeit:blog:import-wp --file=wp-export.xml [--store=1] [--default-category=X] [--download-images] [--dry-run]. Maps authors, categories, tags, posts, comments. - New REST API at
/rest/V1/wimakeit-blog/*with public read / admin write for posts, categories, authors, comments plus search endpoints. - New GraphQL API with queries
wimakeitBlogPost(s),wimakeitBlogCategory(ies),wimakeitBlogAuthor,wimakeitBlogCommentsand mutationwimakeitBlogCreateComment. - New full-text search via MySQL/MariaDB FULLTEXT index on
wimakeit_blog_post_store(title + excerpt + content), with automatic LIKE fallback and dedicated/blog/search?q=...results page.
Perf
- FPC identity tags on Post and Category blocks and models — saving a post or category now flushes only the relevant cache entries instead of the whole page cache.
Admin
- Post and Category data interfaces expose a
CACHE_TAGconstant and implementIdentityInterface. - Repository interfaces gained
deleteById()andgetList(SearchCriteriaInterface)to match Magento service-contract expectations. - New Comments settings group under Stores > Configuration > WiMakeIT > Blog > Comments.
Deps
- Sequences
Magento_Widget(CMS widget) andMagento_GraphQl(GraphQL schema).
Vous avez trouvé un bug ? Faites-nous-en part.
Un court formulaire s'ouvre dans un nouvel onglet — le nom du module et votre langue sont déjà pré-remplis. Décrivez ce que vous avez tenté, ce qui n'a pas fonctionné, et nous vous répondrons sous un jour ouvré.
Signaler un bug pour BlogBesoin d'aide ?
Notre équipe est disponible pour vous accompagner dans l'intégration.