在 magento 中,我试图获取当前主题或包名称,但没有找到任何东西。我使用了 getSkinUrl(') 但它返回的皮肤路径不是包或主题名称。请帮助我如何获取主题或包名称。
问问题
28664 次
5 回答
27
当前套餐
Mage::getSingleton('core/design_package')->getPackageName()
当前主题(前端)
Mage::getSingleton('core/design_package')->getTheme('frontend')
于 2012-06-22T13:23:43.117 回答
13
请注意,@Drew Hunter 的上述回答并不完全正确。虽然getTheme()
是所需的函数调用,但字符串 'frontend' 不是此方法可接受的参数。此方法唯一允许的值是:
- 语言环境
- 布局
- 模板
- 默认
- 皮肤
也就是说,这个函数的正确用法是以下几行之一:
Mage::getSingleton('core/design_package')->getTheme()
Mage::getSingleton('core/design_package')->getTheme('locale')
Mage::getSingleton('core/design_package')->getTheme('layout')
Mage::getSingleton('core/design_package')->getTheme('template')
Mage::getSingleton('core/design_package')->getTheme('default')
Mage::getSingleton('core/design_package')->getTheme('skin')
未能以这种方式使用该方法将始终返回字符串“默认”。
意外结果
使用不当会产生逻辑错误。例如,如果您定义了一个“匹配表达式”以专门针对移动设备。
Mage::getSingleton('core/design_package')
引用以下类
Mage_Core_Model_Design_Package
通过查看此类中的“getTheme()”方法,您会注意到可以传递此方法的可能选项,它们是“语言环境”、“布局”、“模板”、“默认”和“皮肤”。
因此,如果特定商店有“模板”的“匹配表达式”,如下所示
iPhone|iPod|Mobile|mobile > mobile
可能会出现以下情况
Mage::getSingleton('core/design_package')->getTheme('frontend') RETURNS 'default'
Mage::getSingleton('core/design_package')->getTheme('template') RETURNS 'mobile'
于 2013-10-14T02:09:34.017 回答
9
自从
Mage::getSingleton('core/design_package')
相当于
Mage::getDesign()
Drew 的例子可以简化为:
Mage::getDesign()->getPackageName()
和
Mage::getDesign()->getTheme('frontend')
于 2013-03-07T15:27:26.230 回答
1
这是另一种方式:
$package = Mage::getStoreConfig('design/package/name');
$skin_name = Mage::getStoreConfig('design/theme/skin');
于 2013-08-23T14:18:09.603 回答
0
想将此添加为评论,但您也可以直接从数据库中获取它
SELECT * FROM core_config_data WHERE path="design/theme/skin";
SELECT * FROM core_config_data WHERE path="design/package/name";
这对管理员来说可能比实时使用更有用,如果你在 magento 中设计模板或编码,你应该使用 magento 函数。
于 2014-06-24T11:41:45.003 回答