在magento中,我正在尝试获取当前主题或包名但未找到任何内容。 我使用了getSkinUrl('),但它的返回皮肤路径不是包或主题名称。请帮助我如何获取主题或包名称。
答案 0 :(得分:26)
当前套餐
Mage::getSingleton('core/design_package')->getPackageName()
当前主题(前端)
Mage::getSingleton('core/design_package')->getTheme('frontend')
答案 1 :(得分:12)
请注意@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')
如果不以这种方式使用该方法,始终将返回字符串'default'。
意外结果
不正确的使用会产生逻辑错误。例如,如果您定义了“匹配表达式”以专门定位移动设备。
Mage::getSingleton('core/design_package')
引用以下类
Mage_Core_Model_Design_Package
通过查看此类中的'getTheme()'方法,您会发现可以通过此方法的可能选项,它们是'locale','layout','template','default'和'skin'。< / p>
因此,如果特定商店的“模板”具有“匹配表达式”,如下所示
iPhone|iPod|Mobile|mobile > mobile
可能发生以下情况
Mage::getSingleton('core/design_package')->getTheme('frontend') RETURNS 'default'
Mage::getSingleton('core/design_package')->getTheme('template') RETURNS 'mobile'
答案 2 :(得分:9)
自
Mage::getSingleton('core/design_package')
相当于
Mage::getDesign()
Drew的例子可以缩短为:
Mage::getDesign()->getPackageName()
和
Mage::getDesign()->getTheme('frontend')
答案 3 :(得分:1)
这是另一种方式:
$package = Mage::getStoreConfig('design/package/name');
$skin_name = Mage::getStoreConfig('design/theme/skin');
答案 4 :(得分:0)
希望将此添加为评论,但您也可以使用
直接从数据库中获取SELECT * FROM core_config_data WHERE path="design/theme/skin";
SELECT * FROM core_config_data WHERE path="design/package/name";
对于管理员而言,这可能比实时使用更有用,如果您正在设计模板或在magento中进行编码,则应使用magento功能。