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

  1. Open a page: Content types → Page → pick a record.
  2. Find the seo field — a reference card pointing to a PageSEO record.
  3. Expand the card (chevron ›) — the fields are edited right inside.
  4. No record yet — create one via the picker button in the seo field.

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 Graphog:title, og:description, og:type (website, or article for docs), og:url, og:site_name, og:locale (ru_RU / en_US), og:image (when set).
  • Twitter Cardsummary_large_image when an image is set, else summary; plus title, description, image.
  • hreflang<link rel="alternate" hreflang="…"> for ru, en, and x-default.
  • Canonical — with canonical_url empty, the page canonicals to itself (per locale).
  • JSON-LDTechArticle for docs pages; WebSite + Organization for 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