Feature: Configurable public profile
Description
The public profile detail view - the output of the Persons Detail
and Persons List and Detail content elements - is assembled from
the
profile
map of Configuration/
instead of a fixed template. Its
structure
lists name the elements of
the left and the right layout column in render order, and
details
says per element which profile properties, which contract data or which label
it shows. The shipped file renders the section navigation on the left and, on
the right, the headline, the contract positions, the image, the contact data,
a subline, the fold-out profile entries, the link properties and the timeline
sections; below the large breakpoint the navigation moves into the content
column, directly before the subline element - an override that drops
subline from the right column therefore has no mobile navigation. See
The profile map.
Resources/ receives the map as
publicProfile and dispatches every configured element to a partial of its
own below Resources/. An empty
property or relation renders nothing, and so does an element identifier the
template does not know.
Everything the old, static template rendered has an element: links carries
the website and publicationsLink properties with their companion title
properties, and the contact rows carry the type of each email address, phone
number and postal address again. What the rebuilt view has no equivalent for
are the two headings of its static sections, Contracts and
Additional information - every block is a configured element now
and carries its own heading. The label changes that follow from this are
listed in Important: Label changes of the public profile.
The view renders no <main>, no <aside> and no <h1>: it is a content
element, a page may carry two of them, and the page template owns those. Its
headings start at <h2> for the headline and step down from there.
The view ships its own stylesheet and a small ES module for the fold-out
entries, the sticky navigation and the Bootstrap ScrollSpy, both loaded by the
template through the asset collector. The six control icons of the view are
registered in Configuration/ as
academic-persons-envelope, academic-persons-phone,
academic-persons-address, academic-persons-room,
academic-persons-detail-plus and academic-persons-detail-minus, drawn in
currentColor and inlined, so they take the text colour of the page. They
are Bootstrap Icons and carry their MIT
licence in Resources/.
The colours of the view are custom properties declared on
.academic-persons-detail and are the theming hook: redeclare them on that
class to change them. The stylesheet stays inside its own container, so a
theme that clips its content sections with overflow: hidden cuts off the
sticky navigation of the left column - see
How the layout is rendered for the one rule that lifts
it.
Impact
A site package changes the layout of the public profile and the fields it
shows by shipping its own
profile
map, without replacing the detail
template. The maps are merged on the top level, so an override repeats the
complete
structure
and
details
it wants - and the editable
fields the editing frontend reads from the same map. Flush the TYPO3 caches
after changing the file.
An installation that overrides Templates/ keeps
rendering its own template; the publicProfile variable is available to it
from now on. Such an override switches this feature off entirely, and it
does so without any sign that it did: the page renders as it always did, the
profile. and
profile. maps are read by the new
partials only, and a change to either has no effect on that page. The timeline
properties such an override prints - {item.year}, {item.yearStart},
{item.yearEnd} - are unchanged, so its entries keep rendering; what it
loses is the layout, not the values.
The way back is to delete the override and configure the layout instead, or to
re-derive the override from the shipped Detail., which is 45 lines
and dispatches to the eleven partials below
Resources/. Those eleven are the
override surface now, and overriding one of them keeps the configured layout
intact. Which partials the detail view stopped rendering, and which of them was
deleted with it, is listed in
Breaking: The partials of the detail view change.