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

  1. Install Varbase 11 and apply the Varbase Podcasts Base recipe.
  2. Create episodes for two different shows.
  3. 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 podcasts view lists shows with their published-episode count, ordered by a podcasts entityqueue, then newest.
  • The podcast_episodes view 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 podcast nodes
  • ✅ 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

  • podcast changes meaning from episode to show, and a new podcast_episode bundle holds the episodes.
  • There is no upgrade path. Existing podcast nodes, 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 podcast nodes are not migrated.

AI-Generated: Yes

Command icon 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

rajab natshah created an issue. See original summary.

rajab natshah’s picture

Title: The recipe models episodes but not shows, so an episode cannot list its siblings » A podcast is a show with episodes: add the Podcast episode content type and the views that list both
Issue summary: View changes

rajab natshah’s picture

Issue summary: View changes
Status: Active » Needs review

  • rajab natshah committed 736b4cbd on 1.0.x
    feat: #3622954 A podcast is a show with episodes: add the Podcast...
rajab natshah’s picture

Issue summary: View changes
Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.