Problem/Motivation
The markdown front matter only exposes title, url, and flat meta-* keys for metatags. This makes it hard for tools (mkdocs, LLMs, static site generators) to consume structured entity metadata, and the flat naming does not reflect the natural hierarchy of metatag groups.
Proposed resolution
Entity block
Add a configurable entity: key to the front matter:
entity:
id: 405
type: node
bundle: article
status: 1
langcode: enEach property is individually toggleable from the settings form.
Hierarchical meta: block
Replace flat meta-* keys with a nested meta: block. Metatag plugin IDs are split recursively on _ to produce natural sub-groups:
meta:
title: "..."
og:
title: "..."
schema:
article:
"@type": "Article"
name: "..."User interface changes
The settings form at /admin/config/content/content-first gains:
An Entity properties details element with checkboxes for id, type, bundle, status, and langcode (all enabled by default).
Metatag checkboxes reorganised by their Drupal metatag plugin group (via MetatagManager::sortedTags()), with human-readable group titles (Open Graph, Twitter Cards, Schema Article, etc.), eliminating the duplicate labels that appeared when multiple schema types shared property names.
API changes
None.
Data model changes
New entity_properties mapping added to content_first.settings config. A hook_update_N sets defaults for existing installations.
Issue fork content_first-3588465
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
gedur commentedComment #3
gedur commentedPLease review
Comment #6
eduardo morales albertiRemoved duplicated variable definition $config on src/Builder/ContentFirstBuilder.php
Use Symfony Yaml dump instead of the custom method, on src/RenderedContent.php as it already covers all format cases.
Comment #7
eduardo morales albertiReviewed and tested on real site, ready