Menu

Docs SEO NEO Version 1.x Smart-Map & Fallbacks

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:

  1. 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).
  2. 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).
  3. Per-template default. A title= or description= line from Modules > Configure > SeoNeo > Per-template defaults. Placeholders are expanded; a title= 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.
  4. 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.
  5. 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.

PageContent tab TitleMeta TitleResulting <title>
Home (home), per-template title={site_name}HomeemptyLakes & Trails
Walk Helvellyn Ridge WalkHelvellyn Ridge WalkemptyHelvellyn Ridge Walk | Lakes & Trails (smart-map + Title format)
Same walk, custom SERP phraseHelvellyn Ridge WalkBest Helvellyn Walk GuideBest Helvellyn Walk Guide | Lakes & Trails (Meta Title segment + Title format)
Same walk, full title pastedHelvellyn Ridge WalkHelvellyn Ridge Walk | Lakes & TrailsExactly 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 *fieldname behaves the same as fieldname.

See also

Last updated