9

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

4

5 回答 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 回答