SEO
Every page has an SEO block: it fills the <title>, the meta description,
and the social-share preview. Fill it in, and the page gets a correct search
snippet and a clean card when shared.
There is no separate “SEO” screen in the admin — SEO is a field on the page itself.
How to open
- Open a page: Content types → Page → pick a record.
- Find the seo field — a reference card pointing to a PageSEO record.
- Expand the card (chevron ›) — the fields are edited right inside.
- No record yet — create one via the picker button in the
seofield.
DocsPage has the same seo field.
PageSEO fields
| Field | Type | Localized | Where it goes |
|---|---|---|---|
meta_title |
string | yes | <title>. If empty, the page title is used. |
meta_description |
text | yes | <meta name="description">. |
keywords |
string[] | yes | <meta name="keywords">, comma-separated. |
og_image |
entity → media | no | Open Graph and Twitter Card image. |
canonical_url |
string | yes | <link rel="canonical">. If empty, the page canonicals to itself. |
noindex |
boolean | no | true → <meta name="robots" content="noindex">, hidden from search. |
meta_title, meta_description, keywords, and canonical_url are
localized — one value per language via the RU/EN switch on each field.
Practical notes:
meta_title— 50–60 characters work best; put the important word first. The renderer appends the " — DynapiCMS" suffix itself.meta_description— around 150–160 characters describing the page.og_image— 1200×630; keep the subject centred, previews crop edges.canonical_url— leave empty unless the content is duplicated elsewhere (syndication, duplicates).noindex— turn on for service pages (form thank-you pages, utility views) you don’t want in search results.
What the renderer generates on its own
Parts of <head> are built without PageSEO:
- Branded title — " — DynapiCMS" is appended to
meta_title(or the page title). - Open Graph —
og:title,og:description,og:type(website, orarticlefor docs),og:url,og:site_name,og:locale(ru_RU/en_US),og:image(when set). - Twitter Card —
summary_large_imagewhen an image is set, elsesummary; plus title, description, image. - hreflang —
<link rel="alternate" hreflang="…">for ru, en, and x-default. - Canonical — with
canonical_urlempty, the page canonicals to itself (per locale). - JSON-LD —
TechArticlefor docs pages;WebSite+Organizationfor the home page. - sitemap.xml and robots.txt — available at the corresponding URLs; every published page, with hreflang alternates in the sitemap.
Checking the result
Open the page and view its source (Ctrl+U) — every tag is in <head>.
In Yandex Webmaster or Google Search Console, submit sitemap.xml and
watch how the snippets render.
What’s next
- Media —
og_imagereferences a media record. - GraphQL queries — how to query pages with SEO.