PrestaShop Product SEO Subtitles — Documentation
Adds dedicated SEO subtitles after the main heading on product, category, CMS, manufacturer, and supplier pages. Use it to add a second, visible line for benefits, long-tail search phrases, size details, materials, brands, or campaign messages without renaming the page itself.
Features
- On-page SEO subtitles. Displays a separate subtitle after the page heading through the
displayMprSubtitlehook. - Multiple page types. Resolves subtitles for products, categories, CMS pages, manufacturers, and suppliers.
- Product listing support. The hook can receive
id_productso product cards and listings can show product-specific subtitles. - Multilingual subtitle text. Each subtitle stores translated text in the module language table.
- Smart placeholders. Product subtitles can use tokens such as
{name},{price},{manufacturer},{feature:Material}, and{attribute:Color}. - Entity targeting. Rules can target one entity, all entities of a type, products by category, products by manufacturer, or products by supplier.
- Exclusion rules. Product rules can exclude specific products or products from selected categories.
- Priority ordering. Matching subtitles are sorted by priority, with higher numbers displayed first.
- Single or multiple display. The module can show only the top matching subtitle or all matching subtitles.
- Template manager. The Back Office can scan Smarty theme templates and insert the subtitle hook with removable markers.
- Theme CSS classes. Storefront output includes base classes such as
mpr-subtitleandmpr-subtitle-productplus your own class. - Cache refresh after edits. Subtitle create, update, delete, status, and bulk actions clear the module hook template cache.
Configuration options
- Default HTML Tag. Sets the fallback tag for subtitles when a subtitle or template profile does not override it; default:
h2. Set it in SEO Subtitles > Settings > Configuration. - Default CSS Class. Adds the fallback custom class when a subtitle has no own class; default:
mpr-seo-subtitle. Base classes such asmpr-subtitleandmpr-subtitle-productare still added automatically. - Display Mode. Controls whether the shop displays only the highest-priority matching subtitle or all matches; default:
single. Useallwhen several subtitles should appear on the same page. - Subtitle Text. Stores the visible multilingual subtitle text, up to 512 characters; default: ``. Set it when creating or editing a subtitle in SEO Subtitles > Subtitles.
- Name. Stores an internal label for organizing subtitle rules in the Back Office; default: ``.
- Target Entities. Chooses where the subtitle applies through the entity selector; default:
none. Product rules can useall,specific,by_category,by_manufacturer, andby_supplier. - HTML Tag. Overrides the default tag for one subtitle; default:
h2. The subtitle form offersh2,h3,h4,h5,h6,p,span, anddiv. - CSS Class. Adds a subtitle-specific class instead of the default class; default: ``.
- Priority. Controls ordering when several active rules match the same page; default:
10. Higher numbers are shown first. - Active. Enables or disables a subtitle rule without deleting it; default:
1. - Page Profile Active. Enables or disables subtitle rendering for a detected template page type; default:
1. Set it in SEO Subtitles > Templates. - Heading Tag. Tells the template scanner which heading tag to search for before inserting the hook; default:
h1. - Render Tag. Sets a template-profile tag override passed to the hook; default: ``.
- Hook Parameters. Adds validated Smarty hook parameters such as
id_product=$product.id; default: ``. - Inline. Inserts the hook on the same template line instead of a new line where supported; default:
0.
Customization examples
Manual hook placement after a page heading:
{hook h='displayMprSubtitle'}
Product listing placement with a product ID and a smaller tag:
{hook h='displayMprSubtitle' id_product=$product.id tag='h3'}
Hook placement with a custom CSS class:
{hook h='displayMprSubtitle' tag='h3' css_class='category-subtitle'}
Dynamic product subtitle text using placeholders:
{name} by {manufacturer} - {feature:Material}, available from {price}
Category, CMS, manufacturer, and supplier subtitle using the current entity name:
{name} - selected products and practical buying information
Example configuration values for showing several matching subtitles:
default_tag = h2
default_class = mpr-seo-subtitle
display_mode = all
Example product targeting JSON stored by the entity selector:
{
"products": {
"groups": [
{
"include": {
"method": "by_category",
"values": [12, 18]
},
"excludes": [
{
"method": "specific",
"values": [145]
}
]
}
]
}
}
Template manager injection marker:
{* MPR_SUBTITLE_INJECT *}{hook h='displayMprSubtitle'}{* /MPR_SUBTITLE_INJECT *}
Rendered storefront markup:
<h2 class="mpr-subtitle mpr-subtitle-product mpr-seo-subtitle">
Walk-in shower tray with anti-slip stone resin surface
</h2>
CSS override for the module classes:
.mpr-subtitle {
margin-top: 0;
margin-bottom: .5rem;
font-weight: 400;
color: #666;
line-height: 1.4;
}
.mpr-subtitle-product.category-subtitle {
font-size: 1rem;
color: #444;
}
Installation
- In your PrestaShop Back Office, go to Modules > Module Manager.
- Click Upload a module and select the module ZIP file.
- Install the module.
- Open SEO Subtitles in the Back Office menu.
- Go to Templates and scan your active theme.
- Insert the subtitle hook where needed, or place
{hook h='displayMprSubtitle'}manually in your theme. - Create your first subtitle under Subtitles.
How it works
The module adds a SEO Subtitles Back Office menu with Dashboard, Subtitles, Templates, and Settings pages. You create subtitle rules, choose their targets, set the HTML tag and class, then place the display hook in your theme.
On the storefront, matching active subtitles appear as real HTML elements after the page heading or wherever you placed the hook. If no active subtitle matches the current page, the module outputs nothing and the page layout stays unchanged.

Honest limits
The module displays visible on-page subtitle content; it does not rewrite the product name, category name, meta title, meta description, or URL.
Template injection works on Smarty .tpl files under the shop themes directory. Very custom themes, JavaScript-rendered headings, or non-standard heading structures may need manual hook placement.
Subtitle text is limited to 512 characters per language. It is meant for a concise second line, not for long descriptions.
Product placeholders such as {feature:Material} and {attribute:Color} only return values when those product data fields exist in the current language. Attribute placeholders use the product default combination.
The resolver supports manufacturer and supplier pages in the code, but the main Back Office selector experience is focused on products, categories, and CMS pages.
Frequently Asked Questions
Will the subtitle change my product name?
No. The subtitle is displayed separately. It does not rename the product, category, CMS page, manufacturer, or supplier.
Does the subtitle change my meta title?
No. The module renders on-page subtitle content. It does not rewrite the page meta title.
Can I leave subtitles empty for some pages?
Yes. If no active subtitle matches a page, the module returns no output.
Can I use different subtitles in different languages?
Yes. Subtitle text is multilingual, so you can enter different text for each language in your shop.
Can I display more than one subtitle on the same page?
Yes. Set Display Mode to all. With the default single mode, only the highest-priority matching subtitle is shown.
Will this work with my current theme?
The module uses a Smarty hook and includes a template manager for placing that hook after detected headings. Standard PrestaShop themes should work normally; custom themes may need a manual hook placement.
What hook does the module use?
The main hook is:
{hook h='displayMprSubtitle'}
Compatibility: PrestaShop 1.6 to 9.0 (latest), PHP 7.1+. We continue to support upcoming PrestaShop versions.