fix: #3622810 Ship the podcast full template on Vartheme BS5 instead of the site template's theme
Issue: #3622810 The Canvas content templates bind a generic base recipe to a site template's theme
Summary
Varbase Podcasts Base shipped three Canvas content templates for the podcast episode, all bound to vartheme_bs5_rightup, the RightUp site template's theme. A generic base recipe cannot depend on one site template's theme. This MR removes those bindings and ships the full template on Vartheme BS5.
What changed
-
config/canvas.content_template.node.podcast.card.yml: removed. -
config/canvas.content_template.node.podcast.text_card_medium.yml: removed. Card and Text card medium now render through their view displays. -
config/canvas.content_template.node.podcast.full.yml: replaced with an 11-component tree built only from Vartheme BS5 components:- breadcrumb
- h1 heading from the title
- date
- duration text
- cover image
- two
sdc.vartheme_bs5.videoplayers, one bound to thefield_audiofile URL and one tofield_audio_url - share
- a section holding the description and the transcript
Component ids are deterministic uuid5 values. Component versions are the active ones on a Varbase 11 site with Canvas 1.11.0 and Vartheme BS5 5.0.3.
-
config/core.entity_view_display.node.podcast.full.yml: renders the episode fields, as a fallback when no template applies. -
README.md,AGENTS.md,CHANGELOG.md: describe the shipped full template and why it has to ship.
How this differs from the issue summary
The issue summary proposes removing the Canvas templates. Verification showed that removal alone breaks the episode page, so this MR removes the RightUp-bound templates and ships a new full template on Vartheme BS5. The card and text card medium templates are removed as proposed.
Why the full template has to ship
- Varbase Content Base ships the ECA model
eca.eca.enable_full_view_mode_node_type. When a node type is created, it runscreateIfNotExistsoncanvas.content_template.node.<bundle>.fullwith an empty component tree. With no template shipped, installing this recipe produced that empty template, and every episode page rendered blank. This was reproduced locally on the CI stack, and disabling that template brought rendering back. - On Canvas 1.11, no page-level component prints a node's title. Only a full content template does, so a recipe with no template also loses the page h1.
- Varbase Blog Base already ships its full template on Vartheme BS5, and the ECA model leaves it alone. This MR follows the same pattern. A site template repoints or overrides the tree, as RightUp already does for blog and news with
repointComponentTreeToThemeor asimpleConfigUpdateofcomponent_tree. - Vartheme BS5 has no audio component, and none is being added to Varbase. Each player is the base theme's video component, which plays audio files, and renders nothing when its field is empty.
Verification
Fresh install on a stack equivalent to CI: drupal/varbase_project 11.0.x-dev, varbase_starter 1.0.2 plus this recipe, Canvas 1.11.0, Drupal core 11.4.6.
- The install succeeded with no "exists already and does not match" error and no watchdog errors.
- The installed
node.podcast.fulltemplate has status true and 11 items, identical to the shipped YAML, so the ECA model did not blank it. - An episode with an uploaded file shows the h1 and one video source, the file URL.
- An episode with only a URL shows one video source, that URL.
- An episode with neither shows no player.
- Description and transcript render on all three.
/podcastslists all 15 test episodes.- In a browser, an MP3 played through the URL player: readyState 4, currentTime advancing, duration matched, no media error.
- Local pipeline with gitlab-ci-local on this branch's
.gitlab-ci.yml:composer,yaml(22 YAML files, 0 invalid) andrecipeall passed.
Not in this MR
- The CI job's classic related block does not render on Canvas pages. That belongs to #3622806, which covers test coverage in a separate MR.
- Related: #3622802, the initial recipe.
AI-Generated: Yes
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release