Problem/Motivation
The recipe ships one content type, podcast, and it is an episode. Nothing represents the show an episode belongs to, but real podcast sites are organised by show, and most listings a visitor sees are scoped to one.
So a site cannot list a show's episodes, count them, show "more episodes" from the same show, or list the shows themselves. The shipped related display filters on tags, which follow topics, not shows. In the RightUp site template all of these are hand-built Canvas pages with static cards and typed-in counts.
Steps to reproduce
- Install Varbase 11 and apply the Varbase Podcasts Base recipe.
- Create episodes for two different shows.
- Try to list one show's episodes, or count them. Nothing names the show, so it cannot be done from the shipped config.
Proposed resolution
Use a content type for the show, not a vocabulary, because a show carries its own fields and its own page.
- Podcast becomes the show: name, cover, description, host and "Listen on" platform links.
- A new Podcast episode content type belongs to one podcast through a required reference. Audio, duration and episode number move to the episode.
- The
podcastsview lists shows with their published-episode count, ordered by apodcastsentityqueue, then newest. - The
podcast_episodesview adds a show's episodes with an AJAX "View More Episodes", the episode count, more episodes of the same show, an episode's date and host, and the show's platform links. - Canvas content templates for both full pages, paths
/podcasts/[show]and/podcasts/[show]/[episode], permissions, editorial workflow and title length indicator for the new type. - The functional test suite and its fixtures move to the new model.
Related: #3627494, the RightUp theme's pages for this model.
Remaining tasks
- ✅ File an issue
- ✅ Decide between a show vocabulary and a show content type: content type
- ✅ Addition/Change/Update/Fix (MR !14)
- ❌ Upgrade path for existing sites with
podcastnodes - ✅ Testing to ensure no regression
- ✅ Automated unit/functional testing coverage (functional suite green, 46/46)
- ➖ Developer Documentation support
- ➖ User Guide Documentation support
- ❌ UX/UI designer responsibilities
- ➖ Accessibility and Readability
- ❌ Reviewed by a human
- ❌ Code review by maintainers
- ❌ Full testing and approval
- ❌ Credit contributors
- ❌ Review with the product owner
- ✅ Update Release Notes
- ✅ Release (2.0.0)
User interface changes
- A new Podcast episode content type with a required Podcast field. The Podcast form becomes a show form with host and platform links.
API changes
- N/A
Data model changes
podcastchanges meaning from episode to show, and a newpodcast_episodebundle holds the episodes.- There is no upgrade path. Existing
podcastnodes, which are episodes today, are not migrated. This likely belongs in a new major.
Release notes snippet
- A podcast is now a show with episodes, through a new Podcast episode content type. There is no upgrade path: existing
podcastnodes are not migrated.
AI-Generated: Yes
Issue fork varbase_podcasts_base-3622954
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
rajab natshahComment #4
rajab natshahComment #6
rajab natshah