Smart-Map & Fallbacks
How SEO NEO resolves a value: per-page field, smart-map fallback, template default, site default — and how to configure each step.
The resolution order
Every time SEO NEO needs a value — title, description, or anything else in the fallback chain — it works through five steps in order and stops at the first non-empty result:
- Per-page SEO field. Meta Title (
seoneo_title) and Meta Description (seoneo_description) on the page SEO tab. Always win when filled. Meta Title supplies the title segment; global Title format still runs unless the value already ends with separator + site name. Meta Description is returned verbatim (no truncation). - Smart-map fallback. SEO NEO tries the fields you configure in Modules > Configure > SeoNeo > Smart field mapping, in the order listed for each role. The first non-empty value wins. Values resolved from the smart-map are HTML-stripped, collapsed to single spaces, and truncated at the nearest word boundary to the configured max length (default 180 chars).
- Per-template default. A
title=ordescription=line from Modules > Configure > SeoNeo > Per-template defaults. Placeholders are expanded; atitle=line is the full<title>(not passed through global Title format). Only used when Meta Title is empty and smart-map did not supply a title. - Site default. The page Title field (Content tab) is the ultimate fallback for the browser title. Global Title format is applied to smart-map and page-title fallbacks. For description there is no site default — if nothing resolves, the tag is not output.
- Empty. The tag is omitted from the output entirely. SEO NEO never emits an empty
<meta name="description" content="">.
Each step is hookable — see Hooks & Customisation for examples.
Smart-map syntax
The smart-map is configured in Modules > Configure > SeoNeo > Smart field mapping. Enter one mapping per line in key=field1,field2 format:
title=headline,title
description=summary,body,intro
Default install value:
title=headline,title
description=summary,body
Dotted paths into nested fields
description=banner.image.description,gallery.first.alt,matrix_blocks.first.body
Each dot traverses one level. Missing properties at any step are skipped silently.
Ancestor walk with *
description=*section_description,summary
title=*section_title,title
Prefix any field with * to walk ancestor pages when the current page leaves the field empty. SEO NEO tries the current page, then each parent nearest-first, and stops at the first non-empty value.
Per-template defaults
When Meta Title is empty and the smart-map returns nothing for title, SEO NEO tries the per-template defaults. Use [template-name] sections with key=value lines:
[home]
title={site_name}
[walk]
title={long_title|title}{separator}{site_name}
description={summary|body}
[blog-post]
title={title}{separator}{site_name}
description={summary|body}
og_type=article
Supported placeholders:
{title}— the page title{site_name}— the configured site name{separator}— the configured title separator{page.fieldname}— any field on the page (e.g.{page.summary}){fieldname}— shorthand for{page.fieldname}{parent.fieldname}— any field on the parent page{pageNum}— blank on page 1," — Page 2"on subsequent pages{pageNumber}— always numeric (1,2,3){long_title|title}— pipe-separated fallbacks within a placeholder
Description truncation
Values resolved from the smart-map or a template default (steps 2 and 3) are stripped of HTML, collapsed to single spaces, and truncated at the nearest word boundary to Max description length in module config (default 180 chars), with an ellipsis appended.
Values typed directly into seoneo_description (step 1) are returned verbatim. Set max length to 0 to disable truncation for steps 2 and 3.
Worked example — Lakes & Trails (fictional Lake District walking site)
Module config: Site name Lakes & Trails, Title separator | , Title format {title}{separator}{site_name}, smart-map title=long_title,title.
| Page | Content tab Title | Meta Title | Resulting <title> |
|---|---|---|---|
Home (home), per-template title={site_name} | Home | empty | Lakes & Trails |
| Walk Helvellyn Ridge Walk | Helvellyn Ridge Walk | empty | Helvellyn Ridge Walk | Lakes & Trails (smart-map + Title format) |
| Same walk, custom SERP phrase | Helvellyn Ridge Walk | Best Helvellyn Walk Guide | Best Helvellyn Walk Guide | Lakes & Trails (Meta Title segment + Title format) |
| Same walk, full title pasted | Helvellyn Ridge Walk | Helvellyn Ridge Walk | Lakes & Trails | Exactly Meta Title (format skipped — no double site name) |
1.1.9+: a short phrase in Meta Title is intentional — Title format adds branding. If editors paste the full browser title including | Lakes & Trails, SEO NEO does not append the site name again. (Withdrawn release 1.1.8 briefly treated filled Meta Title as a literal full <title> with no format.)
Description example: smart-map description=summary,body and per-template description={title} — walks on {site_name}. If Meta Description is empty and summary is filled, step 2 wins; the template default is never reached.
Common gotchas
- Field doesn't exist on the template. SEO NEO skips it silently. Check the field is on the template in Setup > Templates.
- Ancestor walk on the homepage. The homepage has no parents, so
*fieldnamebehaves the same asfieldname.
See also
- Configuration — where to enter the smart-map and per-template defaults.
- Hooks & Customisation — override any step in the resolver chain.
- Template API — reading resolved values in templates.
Last updated