Breaking: Images render as a responsive picture 

Description 

The partner list item, the partnership list and teaser items and the partner page template render their image through the responsive image partial of EXT:academic_base, Partials/Academic/Image.html, from 3.0 on. Every raster image is therefore a <picture> with WebP sources and a fallback <img> that carries the classes it carried before, and an SVG file is rendered as one <img> of the original file without processing.

The three list items ask for the preset logo: the image they render is the first media file of the partner page, which is the partner logo, and logo applies no crop, so a wide logo is not cut into a card ratio. The page template asks for detail.

The views register EXT:academic_base/Resources/Private/Partials/: the plugin view with the partial root path key -1, below the keys 0 and 1 it uses already, and the page object of the partner page type with the key -1758484801, below every theme and project path. The page object registers it twice, because a PAGEVIEW page object reads no partialRootPaths: it derives those from paths by appending Partials/, so paths carries EXT:academic_base/Resources/Private/ under the same key.

Impact 

  • CSS that selects the image as a direct child of the card, or as the direct child of the detail container, no longer matches: it is wrapped in a <picture> .
  • The fallback image is requested with loading="lazy", which it was not before, and its width and height are those of the preset rather than those of the original file.
  • A project that replaces the partial root paths of the plugin completely, or a page object that renders one of the item partials or the page template in a view of its own, fails with an exception on the partial Academic/Image that the view cannot resolve.

Affected Installations 

Every installation that renders a partner list, a partnership list or teaser, or a page of the partner page type with an image.

Migration 

  1. Adjust CSS that addresses the partner image.
  2. A plugin view whose partial root paths were replaced needs the path of EXT:academic_base below the others:

    plugin.tx_academicpartners.view.partialRootPaths {
        -1 = EXT:academic_base/Resources/Private/Partials/
    }
    Copied!
  3. If a page object of the project renders the page template or one of the item partials itself, list the path there with a key of your own - under partialRootPaths for a FLUIDTEMPLATE page object, under paths for a PAGEVIEW one:

    page.10 {
        partialRootPaths.-1700000001 = EXT:academic_base/Resources/Private/Partials/
        paths.-1700000001 = EXT:academic_base/Resources/Private/
    }
    Copied!
  4. Flush the TYPO3 caches, so the Fluid template cache is rebuilt.