@php // Each line renders only when it has something in it. A cleared field left an
// empty heading or paragraph behind, which still takes its margins on the page
// and puts an empty
in front of a search engine.
@endphp
@if ($storyEyebrow !== ''){{ $storyEyebrow }}@endif
@if ($storyTitle !== ''){{ $storyTitle }}
@endif
@if ($storyP1 !== '')
{{ $storyP1 }}
@endif
@if ($storyP2 !== '')
{{ $storyP2 }}
@endif
@php /* Label and destination are both editable. The button used to carry a hardcoded
caption and a hardcoded /restaurants link, so an operator could rewrite every
word around it and not the one thing people click. A blank label hides the
button rather than rendering an empty pill. */
@endphp
@if ($storyBtn !== '')
@php /* Resolved by pc_link(), the one place a LINK field is turned into an href —
about.btn_url is declared as one (PageContent::LINK) exactly like the
Partner buttons and the header ticker, both of which already go through it.
The inline test that stood here recognised nothing but http(s), so the other
destinations that field accepts and stores — an anchor, a mailto:, a tel: —
were passed to url() and came back as site routes that answer 404, and a
cleared URL under a kept label pointed at the site root. */
@endphp
{{ $storyBtn }}
@endif
@php /* The paths resolve through t() like every other string on this page, so the
pictures are swappable from Pages → About with no second mechanism. media()
still resolves and falls back, so a cleared or missing file cannot break the
row — it substitutes rather than rendering a broken image. */
@endphp
@php
// One field, several pictures: the collage takes the first three of a single list
// rather than three separately-named slots, so choosing them is one trip to the media
// library instead of three. Short lists still render — the layout just uses what it
// has — and media() substitutes for anything missing rather than breaking the row.
$photos = $storyPhotos;
@endphp
@if ($photos)
@if (isset($photos[1]))
 }})
@if (isset($photos[2]))
 }})
@endif
@endif
@endif