Ga naar inhoud

CGC nieuws en agenda

Doel & URL('s)

Nieuwsberichten en agenda-items van het CGC.

URL Scherm
/cornelis-graafland-centrum/nieuws/ Nieuwsoverzicht (H1 "Nieuws")
/cornelis-graafland-centrum/nieuws/page/2/ Paginering
/cornelis-graafland-centrum/nieuws/<slug>/ Nieuws-single (cgc-post, 20 items)
/cornelis-graafland-centrum/agenda/ Agenda-overzicht (H1 "Agenda")
/cornelis-graafland-centrum/agenda/<slug>/ Event-single (cgc-event, 1 item)

Voor wie: alle bezoekers (publiek).

Cross-CPT-query met Websites-filter

De nieuws- en agenda-overzichten queryen alle nieuws- resp. event-post-types (gb-post/wv-post/cgc-post resp. gb-event/ wv-event/cgc-event) met meta-filter Websites LIKE 'CGC' — het checkbox-veld "Websites" op elk nieuws-/event-item bepaalt dus op welke subsite(s) het verschijnt. Items van een andere subsite krijgen in de lijst ?t=CGC achter hun permalink en openen (bij nieuws) in een nieuw tabblad. Sortering: menu_order ASC, date DESC.

Opbouw

Nieuwsoverzicht /cornelis-graafland-centrum/nieuws/

Layout met rechterzijbalk:

  1. H1 "Nieuws".
  2. Eerste 2 items als grote kaart (preview-sidebar: afbeelding + intro, afgekapt op 150 tekens); overige items als kleine regelkaart (preview-sidebar-small).
  3. 10 items per pagina; paginering (bij de huidige 20 items: 2 pagina's).
  4. Zijbalk: CGC "Word vriend"-banner + agenda-blok (alleen bij komende CGC-events; momenteel leeg).

Nieuws-single /cornelis-graafland-centrum/nieuws/<slug>/

  1. Image-header met subtitel+H1-overlay — alleen bij een eigen afbeelding; anders een kale H1.
  2. Lead-alinea (in de praktijk leeg — het intro-veld bestaat niet meer in de ACF-groep) en de nieuwstekst (wysiwyg-veld news_text, verplicht).
  3. Footer: deelknoppen "Deel dit nieuwsbericht: " (Facebook/Twitter/LinkedIn). Een auteursblok bestaat in het template maar verschijnt nooit (zie afwijkingen).
  4. Zijbalk: downloads (indien gevuld), CGC-banner, agenda-blok (leeg).

Agenda-overzicht /cornelis-graafland-centrum/agenda/

  1. H1 "Agenda".
  2. Lijst met uitsluitend komende events (minstens één event_date ≥ vandaag, gesorteerd op eerstvolgende datum): de eerste 2 als afbeeldingskaart (preview), volgende als kaart met datumblokje (preview-calender).
  3. Momenteel is de lijst leeg (het enige cgc-event dateert van 5 oktober 2021); er verschijnt dan een lege lijstsectie.
  4. Zijbalk: alleen de CGC-banner.

Event-single /cornelis-graafland-centrum/agenda/<slug>/

  1. Image-header (alleen bij eigen afbeelding), anders kale H1.
  2. Lead (event_intro), tekst (event_text), eventuele componenten.
  3. Footer: deelknoppen "Deel dit evenement: ".
  4. Zijbalk: infoblok "Informatie" (c-event-details) met per datum een regel "Datum: {datum}
    {tijd} uur", een regel "Locatie: {locatie}" en — alleen indien gevuld — "Kosten: {kosten}".

Databronnen

Veld/bron Gebruik
cgc-post (CPT) nieuwsberichten; velden news_image, news_image_as_cover, news_text (verplicht), news_related_items, display_in_article_section
cgc-event (CPT) events; velden event_dates (repeater: event_date + event_time), event_image, event_intro, event_text, event_components, event_location
Meta Websites (checkbox) subsite-filter in nieuws-/agenda-query's (LIKE 'CGC')
ACF-optie CGC_sidebar_banner zijbalk-banner
ACF-optie CGC_fallback_image event-afbeelding-fallback in lijsten

Gedrag & rollen

  • Volledig publiek; geen rolonderscheid.
  • Agenda toont nooit verlopen events (filter op datum ≥ vandaag); de single van een verlopen event blijft wel direct via URL bereikbaar.
  • Nieuws-items van andere subsites in de CGC-lijst openen in een nieuw tabblad met ?t=CGC (zodat de CGC-schil behouden blijft).

Acceptatiecriteria

  • Als anonieme bezoeker op /cornelis-graafland-centrum/nieuws/ zie ik H1 "Nieuws" met alle nieuwsitems die het website-vinkje "CGC" hebben (over alle nieuws-post-types heen): de eerste 2 als grote kaart met afbeelding en intro (≤ 150 tekens), de rest als kleine kaart; 10 per pagina met paginering.
  • Als anonieme bezoeker op /cornelis-graafland-centrum/nieuws/page/2/ zie ik de volgende 10 items.
  • Als anonieme bezoeker verschijnt een nieuwsitem van een andere subsite met website-vinkje "CGC" in de CGC-nieuwslijst; de link bevat ?t=CGC en opent in een nieuw tabblad.
  • Als anonieme bezoeker op een cgc-post-single met afbeelding zie ik een image-header met titel-overlay; zonder afbeelding een kale H1; daaronder de nieuwstekst en deelknoppen "Deel dit nieuwsbericht".
  • Als anonieme bezoeker op /cornelis-graafland-centrum/agenda/ zie ik H1 "Agenda" en uitsluitend events met een datum vandaag of later (website-vinkje "CGC"); zonder komende events is de lijst leeg.
  • Als redacteur die een cgc-event met toekomstige datum publiceert, verschijnt dat event in het agenda-overzicht (eerste 2 als afbeeldingskaart, volgende met datumblokje) én in het agenda-blok in de zijbalk van CGC-pagina's.
  • Als anonieme bezoeker op een cgc-event-single zie ik in de zijbalk het blok "Informatie" met alle datums (elk met tijd en het achtervoegsel "uur"), de locatie en — alleen indien gevuld — de kosten.
  • Als anonieme bezoeker blijft de single van een verlopen event (bijv. /cornelis-graafland-centrum/agenda/plenaire-vergadering/) via de directe URL bereikbaar met HTTP 200.

Bekende afwijkingen

Niet nabouwen in Next.js — wel vermelden in het testrapport

  • Auteursblok toont nooit op nieuws- en event-singles door een bug (ongedefinieerde $hasAuthor-variabele in de Post/Single- en Event/Single-traits). De velden news_subtitle/news_intro/news_author bestaan bovendien niet meer in de ACF-groep — de lege lead-alinea op nieuws-singles is daarvan het gevolg.
  • news_components wordt niet gerenderd: de blocks-partial leest het veld components, terwijl nieuws de flexibele inhoud in news_components opslaat. Flexibele nieuws-componenten (gallery/video/downloads enz.) verschijnen dus nooit op een nieuws-single.
  • De bodyclass van het nieuws- en agenda-archief luidt post-type-archive-gb-post/-gb-event (gevolg van de cross-CPT-query) — cosmetisch, thema is wel theme-cgc.
  • SEO-titel van de event-single is "Agenda - Gereformeerde Bond" (archieflabel i.p.v. de eventtitel).
  • De ACF-JSON-groep "Evenementen" mist de velden event_type, event_author en event_costs die de code nog leest (legacy-reads; "Kosten" kan alleen gevuld zijn bij oude data).