我喜欢创建一个新包的主要原因是它允许您在商店主题和默认捆绑的 Magento 主题之间保持清晰的分离。另一方面,大多数扩展将布局和模板文件安装到app/design/frontend/default/default/并且如果您的主题安装在默认包下,magento 将找到扩展前端文件,否则您必须将扩展文件复制到应用程序/设计/前端/包/默认/始终。所以使用你自己的包需要做更多的工作。
我很想知道我是否遗漏了其他任何东西,那么在 Magento 中创建自己的主题包而不是使用默认包有什么好处?
我喜欢创建一个新包的主要原因是它允许您在商店主题和默认捆绑的 Magento 主题之间保持清晰的分离。另一方面,大多数扩展将布局和模板文件安装到app/design/frontend/default/default/并且如果您的主题安装在默认包下,magento 将找到扩展前端文件,否则您必须将扩展文件复制到应用程序/设计/前端/包/默认/始终。所以使用你自己的包需要做更多的工作。
我很想知道我是否遗漏了其他任何东西,那么在 Magento 中创建自己的主题包而不是使用默认包有什么好处?
首先,创建一个新包是 Magento 官方用户指南需要做的事情。
http://info.magento.com/rs/magentocommerce/images/MagentoDesignGuide.pdf
它是这样说的:“请忽略指示您在默认设计包中创建自定义主题或直接在默认/默认目录中编辑文件的遗留 Magento 说明和教程。相反,提供最佳升级的方法您的主题的路径和对意外更改的最大保护是创建一个新的设计包并在其中创建您的自定义主题。”
我个人创建新包的逻辑是,如果 Magento 需要很少的商店视图并且它们有差异,我需要有自己的“默认”主题,这正是我通过创建自己的包得到的(Magento 将在 my_theme 中查找文件自定义设计包中的主题,然后在默认主题中,然后回退到基本包)
如果您使用默认/默认,并且您使用的第三方扩展将它们的文件放在默认/默认中,那么您不能覆盖这些文件 - 您必须直接编辑它们。
所以,由
您只能覆盖您的包中需要的模板/布局。
/app/design 和 /skin 两个文件夹是相同的(可以说是镜像)。将所有的 css、图像文件保存在 /skin/your_theme 目录下,将 .phtml 用于布局的 /app/design/your_theme 文件夹中。
从我的角度来看,默认/默认包的设计很糟糕。如果您使用自己的包,则扩展不能使用您的默认目录(?对吗?)。我建议添加一个字段 default-package。
我现在使用这个解决方法 - config.xml:
<core>
<rewrite>
<design_package>Your_Extension_Model_Design_Package</design_package>
</rewrite>
</core>
模型/设计/Package.php
class Your_Extension_Model_Design_Package extends Mage_Core_Model_Design_Package
{
/**
* Use this one to get existing file name with fallback to default
*
* $params['_type'] is required
*
* @param string $file
* @param array $params
* @return string
*/
public function getFilename($file, array $params)
{
Varien_Profiler::start(__METHOD__);
$this->updateParamDefaults($params);
$result = $this->_fallback($file, $params, array(
array(),
//'_package' is new. Uses this package when looking for default theme
array('_theme' => $this->getFallbackTheme()),
array('_theme' => self::DEFAULT_THEME, '_package' => 'default'),
));
Varien_Profiler::stop(__METHOD__);
return $result;
}
}