Pack Product Badges: setup and help
Quick start
- Install the mprpackproducts ZIP on a compatible PrestaShop version.
- Open Configure > Pack Product Settings and keep Enable pack badges on.
- Edit a test product reference to start with mpr-pack- and save it.
- Open a listing containing the product and check its Bundle or existing native pack flag.
- Refresh the listing with a facet and confirm the flag remains.
- If you need the contents tab, add real pack mappings to the prefixed mpr_pack_content table.
- Open the pack product and verify the included-product cards and displayed base prices.
Requires PrestaShop 1.7 or later and PHP 7.1 or later.
Setup manual
Install and enable badges
In your Back Office, open Modules > Module Manager, choose Upload a module, and upload the module ZIP. Install it, then click Configure. On older PrestaShop versions, use the corresponding Modules page.
Open Pack Product Settings and leave Enable pack badges on. Its default is Yes. This is the only pack-behavior setting. It gates listing decoration, the before-price marker, included products and the rewrite-only URL helper.
Requires PrestaShop 1.7 or later and PHP 7.1 or later.
Mark products as packs
Edit each relevant product reference so it begins with mpr-pack-, for example mpr-pack-starter, mpr-pack-seo-tools or mpr-pack-bathroom-kit. Save the product and open a listing that contains it. Native PrestaShop pack status alone is not this module's detection rule.
The label Bundle is provided through actionProductFlagsModifier where available, so the theme can render it with its native flags. An existing native pack flag is retained. JavaScript adds a native-style .product-flag.pack to a theme flag list when needed. Only cards without such a list use the module's .mpr-pack-badge fallback overlay.
The displayProductListReviews hook outputs the pack indicator with the text Bundle: Save Big. That text is a display label; the module does not calculate savings or create discounts. It does not add a special pack card border/shadow class. Theme styles remain responsible for the card appearance.
Add included products
There is no contents editor in the module configuration. Have your database administrator add the pack-to-product mapping to the prefixed mpr_pack_content table. Replace ps_ with your actual table prefix and use real product IDs:
INSERT INTO ps_mpr_pack_content (id_pack, id_product, position) VALUES
(100, 12, 0),
(100, 34, 1),
(100, 56, 2);
The installed table has unsigned id_pack, id_product and position columns. Position defaults to 0. The primary key is (id_pack, id_product), with an index on id_pack.
On a product with the required reference prefix, displayProductExtraContent adds What's Included (N modules) when matching active products can be loaded. Products are ordered by position. Cards contain a link, name, image or No image placeholder, and a price or FREE for a zero/non-positive stored price. The renderer reads the base product-table price and formats it in the current currency. Do not use it as proof of the final customer-specific, tax-inclusive or converted selling price.
This is a display mapping. It does not create a native PrestaShop pack, manage component inventory or change what checkout delivers. The query uses current-language/current-shop product language rows; it does not fully enforce included-product shop activation through product_shop.
Check your theme and style the output
Your product listing should expose the product reference to the hooks. A compatible card can contain:
<article class="product-miniature js-product-miniature">
<div class="thumbnail-container">
{* product image here *}
</div>
{hook h='displayProductPriceBlock' product=$product type='before_price'}
{hook h='displayProductListReviews' product=$product}
</article>
The hidden before-price marker is not a visible badge on its own. Fallback overlays look for .product-miniature__top, .thumbnail-container or .product-image-container. JavaScript observes inserted content under #js-product-list and decorates new pack indicators after AJAX listing updates. Test your theme if it replaces the entire observed container.
Adjust the fallback overlay in your theme stylesheet when needed:
.mpr-pack-badge {
top: .5rem;
right: .5rem;
background-color: #3BAF5C;
}
You can override the variables used by the fallback badge, savings indicator and included-product cards from your theme stylesheet:
:root {
--mprpackproducts-success: #3BAF5C;
--mprpackproducts-bg: #fff;
--mprpackproducts-bg-secondary: #D8F0E0;
--mprpackproducts-border: rgba(59, 175, 92, 0.2);
--mprpackproducts-radius: 0.375rem;
--mprpackproducts-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.1);
}
The module integrates ThemeDetector variables under --mprpackproducts-*. Edit only variables used by your installed stylesheets. Native .product-flag.pack styling comes from the theme. There are no Back Office controls for label wording, shape, color or per-pack designs.
The enabled module also contains a helper for resolving ambiguous rewrite-only product/category/CMS/manufacturer routes. It is not a general Friendly URL configuration screen. Test existing clean URLs after changing the master switch.
Verify and troubleshoot
- Confirm a reference starts with the exact
mpr-pack-prefix. - Open a category and search listing containing that active product. Check the Bundle/native pack flag and listing indicator.
- Change a facet or trigger an AJAX refresh and confirm the new card still has its flag.
- If the flag is absent, check Enable pack badges, product reference data, hook placement and card markup. An existing native pack flag can replace the module's own Bundle label.
- If the tab is absent, check the mapping rows, included-product activation/language data and theme support for product extra content.
- Use Integrity if required tables or hooks are missing. On older PrestaShop, check locale API availability if the contents tab causes an error.
Disable or uninstall
Turn Enable pack badges off for a temporary stop. Uninstall through Module Manager to remove configuration and the mpr_pack_content table. Back up mappings first. Uninstall also cleans ThemeDetector registration; a failed ThemeDetector cleanup stops uninstall so you can correct it and retry. Product references are not reverted.
Compatibility
Requires PrestaShop 1.7 or later and PHP 7.1 or later.
Questions
No questions about this module yet
Ask anything about installation, compatibility or setup. Answers appear here.
Known Issues
10
Pack item showed an unrelated combination
Pack lookups could fail
Standard PrestaShop packs showed no contents
Contents tab used the wrong item name
Brand-page links could fail
Pack styling did not match the shop
Missing translations
Module administration could fail to open
Pack assets incompatible with asset combining
Configuration page had no usable settings
Feature Requests
3
Implemented
Pack badges and contents
Native theme pack cards
Native PrestaShop pack support
Changelog
v1.2.02026-10-04
- Addedself-healing integrity checks for automatic diagnostics and repair
- Addedadmin menu management via MenuInstaller for streamlined module setup
- FixedAdd uninstallDb() to clean up mpr_pack_content table on removal
Older releases
v1.1.202026-08-31
- Addedcomplete FR/DE/ES/IT/PL translations
- FixedMigrate module state to MPR config
- FixedAdd theme detector support
v1.1.02026-01-31
- AddedPS 9 / Hummingbird theme compatibility
- Addedconfigurable badge text and colour per product listing
- Improved'What's Included' tab rendering with product thumbnails
- Fixedbadge overlap with discount badge when both are active
v1.0.02025-06-30
- Initialrelease: pack/bundle product badges for PrestaShop listings
- InitialAutomatic detection of PS native pack products
- Initial'What's Included' expandable tab on product page showing all pack items
- InitialCompatible with PS 1.7.x and PS 8.x
Demo
Test the full module before you buy
Buy a licence later and keep your settings.
- Your 30-day demo Test it on your own shop for 30 days from the first install.
- Ready demo shop Explore a ready demo shop in your browser.
- No registration No account, email or store domain needed.
By downloading, you accept the demo terms and privacy policy.
By opening this demo you accept the demo terms and the privacy policy.