diff --git a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php index 90026b6e8..c175618cc 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php +++ b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php @@ -84,12 +84,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, '/'); @@ -98,7 +114,8 @@ class SmartyAssetsManager } $smartyParser = $template->smarty; - $templateDefinition = $smartyParser->getTemplateDefinition(); + /** @var \Thelia\Core\Template\Smarty\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 27b8fbfa5..3201e1215 100644 --- a/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php +++ b/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php @@ -176,9 +176,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 (false !== $webAssetTemplate) { + $customPath = str_replace($ret->getName(), $webAssetTemplate, $ret->getPath()); + $ret->setName($webAssetTemplate); + $ret->setPath($customPath); + + } + + return $ret; } public function getTemplate()