fix: #3613826 Stop duplicating Drupal CMS recipe content and ship the missing Terms and Conditions page
Issue: #3613826 Stop duplicating Drupal CMS recipe content and ship the missing Terms and Conditions page
What this fixes
A fresh install showed two identical Privacy policy links in the footer, both 404 to a visitor, and a Terms and Conditions link that 404ed because no such page existed anywhere in the recipe tree.
Both came from content this recipe should not have been shipping.
Privacy is owned by drupal_cms_privacy_basic. That recipe already ships the Privacy policy page, its own footer link to it, and the Klaro pointer at it, and it leaves the node unpublished on purpose — the body reads "This content needs to be edited before publishing", because the privacy statement is the site owner's to write. Horizon Aid had inherited copies of that link from the Varbase Starter clone and shipped them as its own, so an extra always-enabled link rendered and 404ed.
Five Top tasks links are owned by drupal_cms_admin_ui. Ours shared their UUIDs. Default content imports with "skip existing", so which copy won depended on apply order rather than on intent.
Removed eight content files in total; every one was byte-identical to the version the sub-recipe ships, verified file by file before deleting, so nothing is lost.
Terms and Conditions now exists as published default content, and the footer link references it by UUID instead of a bare path.
With the duplicates gone, Drupal hides the remaining privacy link while its node is unpublished, so a fresh install shows no broken link at all, and that link appears on its own once the owner publishes the page.
How this was verified
drush site:install recipes/horizonaidfrom a dropped database: exit code 0, no error lines.- Walked every enabled menu link and resolved it: the only non-200 responses left are the
/admin/*Top tasks links returning 403 to anonymous, which is correct. /terms-and-conditionsreturns 200 and renders its content; it returned 404 before.- In the browser as an anonymous visitor the footer shows one Terms and Conditions link and no Privacy policy link, where it previously showed two broken ones.
- Content after install: 12 countries, 5 programmes, 3 events, 3 blog posts, 3 pages, 24 menu links.
- All seven section pages and the listings still return 200 with no Twig
LoaderErrorand noComponentNotFoundException;/countriesrenders 12 rows,/programs5,/events3. gitlab-ci-localruns the project pipeline green (build:composer-validate,validate:yaml-lint).
User interface changes
- The footer shows one Terms and Conditions link, which resolves, and no duplicate or broken Privacy policy link.
API changes
None.
Data model changes
None.
Release notes snippet
- Removed content that duplicated the Drupal CMS privacy and admin UI recipes, and added the missing Terms and Conditions page. Write and publish the Privacy policy page before launch: Drupal CMS ships it unpublished on purpose.
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