I have identified a bug in the T4 Framework (and every theme I've installed that uses it) where \themes\base\html\layouts\joomla\content\intro_image.php introduces a slash prior to the Intro Image URL when rendering the page. This is problematic when the image to be used is not stored locally and already has a protocol at the start of the URL.
On line 22, T4's version of intro_image.php reads:
<img src="<?php echo JUri::root(true).'/'. htmlspecialchars($images->image_intro, ENT_COMPAT, 'UTF-8'); ?>"
This code does not check whether the URL stored in $images->image_intro starts with a valid protocol such as https.
As a result, a local image URL stored as images/testimage.jpg is properly rendered as <img src="/images/testimage.jpg" ... />
. However, an remote URL stored as https://example.com/testimage.jpg is improperly rendered as <img src="/https://testimage.jpg" ... />
, which means the browser cannot find the image.
The T4 Framework version of intro_image.php is substantially different and appears out-of-date compared to Joomla 4's official version of intro_image.php viewable at https://github.com/joomla/joomla-cms/blob/4.1-dev/layouts/joomla/content/intro_image.php, and T4's version of the file is overriding the official version.
In particular, please note T4's version does not obey Joomla 4's link_intro_image parameter, instead relying on the link_titles parameter, which causes incorrect linking behavior.
Is there a purpose to the T4 Framework including \themes\base\html\layouts\joomla\content\intro_image.php within the framework? When I remove the T4 file, the official Joomla version takes over and images render properly in the browser.
If the file is not necessary, it may reduce JoomlArt's code maintenance overhead to remove it and evaluate whether other files can be removed from the T4 package to allow the Joomla-maintained files to function normally.