---
title: "Breaking: Job images render as a responsive picture"
manual: "Academic Jobs"
version: "main"
source: "Changelog/3.0/Breaking-ImagesRenderAsPicture.rst"
rendered: "2026-09-27T01:55:48+00:00"
---

# Breaking: Job images render as a responsive picture {#breaking-jobs-images-render-as-picture}

## Description {#description}

The job list item renders the job image through the responsive image partial
of `EXT:academic_base`, `Partials/Academic/Image.html`, from 3.0 on. A
raster image is therefore a `<picture>` with WebP sources and a fallback
`<img>` that carries the classes it carried before, and an SVG file -
the shape an employer logo often has - is rendered as one `<img>` of the
original file without processing.

The item asks for the preset `card` with the crop variant `default`. This
extension defines no crop variants, so `default` stays free-ratio and a logo
is not cut. A project that wants its job images cropped like a partner logo
overrides `Job/Item.html` or the preset section of the shared partial.

The views register `EXT:academic_base/Resources/Private/Partials/`: the
plugin view with the partial root path key `-1`, below the keys `0`, `10` and
`20` it uses already, and `page.10` with the key `-1758484804`,
next to the partials this extension registers there.

## Impact {#impact}

-   CSS that selects the image as a direct child of the card 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
    fails with an exception on the partial `Academic/Image` that the view
    cannot resolve. So does a `PAGEVIEW` page object that renders
    `Job/Item`: this extension registers the path under
    `page.10.partialRootPaths`, which a `PAGEVIEW` page object does
    not read - it derives its partial root paths from `paths`, and this
    extension writes no `paths` entry, because it ships no page template of its
    own.

## Affected Installations {#affected-installations}

Every installation that renders a job list with job images.

## Migration {#migration}

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

    ```typoscript
    plugin.tx_academicjobs.view.partialRootPaths {
        -1 = EXT:academic_base/Resources/Private/Partials/
    }
    ```
1.  If a page object of the project renders `Job/Item` itself, list the path
    there with a key of your own - under `partialRootPaths` for a
    `FLUIDTEMPLATE` page object, under `paths` for a
    `PAGEVIEW` one:

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