This is exactly modelled on the blog and blog items from the Deliver Skeleton theme. Replicated for a shop (blog) with products (blog items).
There is a product.yaml blueprint which holds the data for each product configurable from Admin. This blueprint contains the filepicker and sets the variable brand_logo: <picked_image> in the frontmatter of the product page.
On the shop page (shop.html.twig), I am calling in a separate partials template for use when showing the collection of products (so that it isn’t identical to what this display on the individual product pages).
@zigojacko, Yes, it now become much clearer. Thank you.
Have a look at the theme variables docs especially the header object:
header object
The header object is an alias for page.header() of the original [emphasis is mine] page. It’s a convenient way to access the original page headers when you are looping through other page objects of child pages or collections.
So, when using header.brand_logo in shop_item_list.html.twig you are referring to the original (product list) page and not the product (item) page.
In shop_item_list.html.twig you should explicitly reference the ‘page’ variable, passed in as parameter in the {% include %} statement: