Magento 有一个回退机制,通过一组定义的路径检查预期文件的存在,帮助防止错误和主题问题。它是这样实现的:
/**
* Check for files existence by specified scheme
*
* If fallback enabled, the first found file will be returned. Otherwise the base package / default theme file,
* regardless of found or not.
* If disabled, the lookup won't be performed to spare filesystem calls.
*
* @param string $file
* @param array &$params
* @param array $fallbackScheme
* @return string
*/
protected function _fallback($file, array &$params, array $fallbackScheme = array(array()))
{
if ($this->_shouldFallback) {
foreach ($fallbackScheme as $try) {
$params = array_merge($params, $try);
$filename = $this->validateFile($file, $params);
if ($filename) {
return $filename;
}
}
$params['_package'] = self::BASE_PACKAGE;
$params['_theme'] = self::DEFAULT_THEME;
}
return $this->_renderFilename($file, $params);
}
作为 Magento 主题开发人员,您有两个选择:您可以尽可能少地添加到新主题并依赖回退,或者您可以将回退主题中的所有内容复制到新主题中并修改它(在这种情况下,回退有在找到目标之前迭代更少的文件)。推荐前一种方法。后者不是。
复制这些文件肯定很麻烦,但另一方面,回退似乎应该相当昂贵,特别是如果(作为一个优秀、精明的编码器)您确保尽可能多的文件回退。所以我发现自己想知道如果我采取措施尽量减少发生的回退量,Magento 网站是否会表现得更好。
我在网上搜索过,但没有找到关于这个问题的任何信息,而且我对 Magento 还不够熟悉,无法自己描述回退。有没有关于这个回退机制的实际性能成本的任何信息?