在magento我试图获得当前的主题或包名但没有找到任何东西.我使用了getSkinUrl('),但它的返回皮肤路径不是包或主题名称.请帮助我如何获取主题或包名称.
Dre*_*ter 26
当前套餐
Mage::getSingleton('core/design_package')->getPackageName()
Run Code Online (Sandbox Code Playgroud)
当前主题(前端)
Mage::getSingleton('core/design_package')->getTheme('frontend')
Run Code Online (Sandbox Code Playgroud)
Pet*_*r A 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')
Run Code Online (Sandbox Code Playgroud)
如果不以这种方式使用该方法将始终返回字符串'default'.
出乎意料的结果
使用不正确会产生逻辑错误.例如,如果您定义了"匹配表达式"以专门定位移动设备.
Mage::getSingleton('core/design_package')
Run Code Online (Sandbox Code Playgroud)
引用以下类
Mage_Core_Model_Design_Package
Run Code Online (Sandbox Code Playgroud)
通过查看此类中的'getTheme()'方法,您会发现可以通过此方法的可能选项,它们是'locale','layout','template','default'和'skin'.
因此,如果某个商店的"模板"具有"匹配表达式",如下所示
iPhone|iPod|Mobile|mobile > mobile
Run Code Online (Sandbox Code Playgroud)
可能发生以下情况
Mage::getSingleton('core/design_package')->getTheme('frontend') RETURNS 'default'
Mage::getSingleton('core/design_package')->getTheme('template') RETURNS 'mobile'
Run Code Online (Sandbox Code Playgroud)
以来
Mage::getSingleton('core/design_package')
Run Code Online (Sandbox Code Playgroud)
相当于
Mage::getDesign()
Run Code Online (Sandbox Code Playgroud)
德鲁的例子可以缩短为:
Mage::getDesign()->getPackageName()
Run Code Online (Sandbox Code Playgroud)
和
Mage::getDesign()->getTheme('frontend')
Run Code Online (Sandbox Code Playgroud)