Add ability to load assets from another template …
- adding param 'template' to
{javascripts file='assets/js/libs/jquery.js' template='baseTemplate'}
{stylesheets file='assets/less/styles.less' filters='less' template='baseTemplate' }
{images file=assets/img/picture.png' template='baseTemplate'}
This commit is contained in:
@@ -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());
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user