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テーマの開発者には、2つのオプションがあります。新しいテーマに追加するものをできるだけ少なくしてフォールバックに依存するか、フォールバックテーマからすべてを新しいテーマにコピーして変更することができます(この場合、フォールバックにはターゲットを見つける前に、より少ないファイルを反復処理します)。前者のアプローチをお勧めします。後者はそうではありません。
これらのファイルをコピーするのは確かに面倒ですが、一方で、フォールバックはかなり高価になるはずです。特に、(優れた、気の利いたコーダーであるため)できるだけ多くのファイルをフォールバックするようにしている場合はなおさらです。そのため、発生するフォールバックの量を最小限に抑えるための措置を講じた場合、Magentoサイトのパフォーマンスが向上するかどうか疑問に思います。
Webを検索しましたが、この質問に関する情報は見つかりませんでした。また、フォールバックを自分でプロファイリングするのに十分なMagentoに精通していません。このフォールバックメカニズムの実際のパフォーマンスコストに関する情報はありますか?