fix: #3614494 Repair the install, tag the demo events and build the event full page

Summary

Three distinct faults in the Horizon Aid Site recipe, each reproduced before fixing:

1. Fresh installs aborted

The ten event-topic term files carried format: basic_html on their description. Varbase ships no basic_html format (it has full_html, content_format, plain_text, plus Canvas and webform formats), so Drupal\Core\DefaultContent\Importer threw InvalidEntityException on event-topic-education.yml:

description.0.format=The value you selected is not a valid choice.

The event_topics vocabulary was never created, the import stopped at that file, and blog truncated to 25 nodes. Every other shipped term file in the recipe has no description, so the block is dropped to match. Reproduced both in the real browser installer via the site-template picker and headlessly with drush site:install recipes/horizonaid.

2. No event was tagged with a topic

Each event's _meta.depends map declared only its category term and its media. Drupal's default-content importer resolves only declared entity: references, so every field_event_topics value was dropped silently — 0 of 24 events tagged, and the Topic exposed filter added in the earlier issue (#3614099, MR !15 (merged)) returned nothing for every option. The topic term UUIDs are now declared in depends.

3. The event full page rendered empty

canvas.content_template.node.event.full existed with component_tree: {} — a placeholder from varbase_events_base — so /events/<alias> rendered header and footer with zero characters of main content, no h1, no images. It is now filled from the design : media banner with the title and description, a 75/25 section carrying About this Event, What You'll Learn, Speakers and a sticky Share rail, then a "More Events" section embedding the events related display.

Adds field_what_you_will_learn and field_speakers as text_long with textarea widgets. Rich text rather than multi-value on purpose: Canvas content templates cannot loop, so a multi-value field must be bound by fixed index (field_partners␞0, ␞1, …) and would leave empty component slots when an event has fewer items. This matches how country.full already models its prose sections (field_our_role, field_on_the_ground).

The events related display could never return results either — it related by field_tags, which no event carries (the 26 tagged nodes are blogs), and its default_argument_options.vids was scoped to the tags vocabulary. It now relates by field_event_topics scoped to event_topics, keeping the nid argument so the current event is excluded.

Also adds About / What You'll Learn / Speakers demo content to all 24 events.

Verification

Verified on a clean install from this recipe (drush site:install recipes/horizonaid), plus a real-browser install through the site-template picker.

Check Result
Import / validation errors none
Nodes blog=26 country=12 event=24 page=3 program=5
event_topics terms 10
Events tagged with a topic 24 of 24
Events carrying body / What You'll Learn / Speakers 24 / 24 / 24
Event page H1 title, 2 About paragraphs, 4 bullets, 3 speaker lines, banner at 20px radius, breadcrumb
More Events 2 topic-related events
Topic filtering on /events Protection 5, Health 2, Shelter 3, Partnerships 5

Known gaps (stated honestly, not hidden)

  • The design's list bullets are a custom blue dot (a list-text component the theme does not ship), so bullets currently use the Bootstrap default. Theme-side, to be handled separately.
  • The Share rail renders but is not sticky/vertical on the current share component version. Theme-side, to be handled separately.
  • The component version hashes pinned in the content template are only valid for the theme version installed when they were read. When the theme changes they go stale and the recipe stops installing — this happened during development and was fixed by re-reading the live component schemas. Worth deciding whether these templates should pin hashes at all.

Issue

Closes drupal.org issue #3614494 — "The content import fails on install, and the event full page renders empty".

AI-Generated: Yes

Checkpoints

  • File an issue about this project
  • Addition/Change/Update/Fix to this project
  • Testing to ensure no regression
  • Automated unit/functional testing coverage
  • Developer Documentation support on feature change/addition
  • User Guide Documentation support on feature change/addition
  • 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
Edited by Rajab Natshah

Merge request reports

Loading