如何在Magento中获取当前主题名称

时间:2012-06-22 11:46:17

标签: php magento

在magento中,我正在尝试获取当前主题或包名但未找到任何内容。 我使用了getSkinUrl('),但它的返回皮肤路径不是包或主题名称。请帮助我如何获取主题或包名称。

5 个答案:

答案 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功能。