Bug #93544
openTemplate overriding for FluidMail ignoring index of path
0%
Description
We have to extensions: cart (cart extension with default email templates) and lst_lwo which overrides some of the cart email templates
Cart ext_localconf.php:
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Templates/';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['partialRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Partials/';
lst_lwo ext_localconf.php:
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'][1613456229] = 'EXT:lst_lwo/Resources/Private/Extensions/Cart/Templates/';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['partialRootPaths'][1613456229] = 'EXT:lst_lwo/Resources/Private/Extensions/Cart/Partials/';
Results in the image "Backend $GLOBALS[‘TYPO3_CONF_VARS’]".
If I debug in FE (instance of FluidEmail), then I find the following (see other image "Frontend debug of FluidEmail instance").
Although the index of "lst_lwo" overriding is higher then the one of "cart", cart templates comes on last position.
Workaround: If I add a dependency to "cart" in "lst_lwo", all works like expected.
Files
Updated by Ramon Zöllner almost 3 years ago
I ran into this issue as well and this is what I found:
Short Version
the sorting of paths is skipped when using the constructor of
TYPO3Fluid\Fluid\View\TemplatePaths
with an array.
Longer Version
In FluidEmail::initializeView we have
$templatePaths = $templatePaths ?? new TemplatePaths($GLOBALS['TYPO3_CONF_VARS']['MAIL']);
The constructor of TYPO3Fluid\Fluid\View\TemplatePaths calls
TemplatePaths::fillFromConfigurationArray
which extracts the different path parts via
TemplatePaths::extractPathArrays
but during this process the numerical indices are lost and the paths can not be sorted later.
Normally the TYPO3 implementation of TYPO3\CMS\Fluid\View\TemplatePaths takes care of path sorting, but only for paths that are configured in TypoScript (as far as I can tell).
As the error is not limited to Mailer, but all instances where template overriding is done in PHP and not TypoScript, I think this is more of a Fluid issue than Mailer API.
Updated by Hartmut Steglich over 2 years ago
- TYPO3 Version changed from 10 to 11
Same issue still with TYPO3 11.5.10
Are there any workarounds (like using TS)?