diff --git a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php index d595fdbe4..5bce4a2c8 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php +++ b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php @@ -23,7 +23,7 @@ namespace Thelia\Core\Template\Smarty\Assets; - +use Thelia\Core\Template\Smarty\SmartyParser; use Thelia\Log\Tlog; use Thelia\Tools\URL; use Thelia\Core\Template\Assets\AssetManagerInterface; @@ -86,12 +86,28 @@ class SmartyAssetsManager } } + /** + * Retrieve asset URL + * + * @param string $assetType js|css|image + * @param array $params Parameters + * - file File path in the default template + * - source module asset + * - filters filter to apply + * - debug + * - template if you want to load asset from another template + * @param \Smarty_Internal_Template $template Smarty Template + * + * @return string + * @throws \Exception + */ public function computeAssetUrl($assetType, $params, \Smarty_Internal_Template $template) { - $file = $params['file']; - $assetOrigin = isset($params['source']) ? $params['source'] : "0"; - $filters = isset($params['filters']) ? $params['filters'] : ''; - $debug = isset($params['debug']) ? trim(strtolower($params['debug'])) == 'true' : false; + $file = $params['file']; + $assetOrigin = isset($params['source']) ? $params['source'] : "0"; + $filters = isset($params['filters']) ? $params['filters'] : ''; + $debug = isset($params['debug']) ? trim(strtolower($params['debug'])) == 'true' : false; + $webAssetTemplate = isset($params['template']) ? $params['template'] : false; /* we trick here relative thinking for file attribute */ $file = ltrim($file, '/'); @@ -100,7 +116,8 @@ class SmartyAssetsManager } $smartyParser = $template->smarty; - $templateDefinition = $smartyParser->getTemplateDefinition(); + /** @var SmartyParser $templateDefinition */ + $templateDefinition = $smartyParser->getTemplateDefinition($webAssetTemplate); $templateDirectories = $smartyParser->getTemplateDirectories($templateDefinition->getType()); diff --git a/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php b/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php index cffd16479..83dfb9a04 100644 --- a/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php +++ b/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php @@ -178,9 +178,25 @@ class SmartyParser extends Smarty implements ParserInterface } } - public function getTemplateDefinition() + /** + * Get template definition + * + * @param bool $webAssetTemplate Allow to load asset from another template + * If the name of the template if provided + * + * @return TemplateDefinition + */ + public function getTemplateDefinition($webAssetTemplate = false) { - return $this->templateDefinition; + $ret = $this->templateDefinition; + if ($webAssetTemplate) { + $customPath = str_replace($ret->getName(), $webAssetTemplate, $ret->getPath()); + $ret->setName($webAssetTemplate); + $ret->setPath($customPath); + + } + + return $ret; } public function getTemplate()