Magento-获取皮肤URL

Magento-获取皮肤URL,magento,skin,Magento,Skin,我想调用我的Magento商店皮肤的URL以加载图像。我已经读到,您可以使用,但我通过使用它获得了“对未定义方法的调用”。我试图寻找此方法的Mage::getModel版本,但找不到它 我确实找到了艾伦·斯托姆的文章,这篇文章让我大部分时间都在那里。艾伦说我可以使用Mage::getBaseDir('skin'),我发现Mage::getSingleton('core/design_package')->getPackageName()。我找不到获取皮肤目录最后一部分的方法。如果我当前的皮肤是/

我想调用我的Magento商店皮肤的URL以加载图像。我已经读到,您可以使用
,但我通过使用它获得了“对未定义方法的调用”。我试图寻找此方法的
Mage::getModel
版本,但找不到它

我确实找到了艾伦·斯托姆的文章,这篇文章让我大部分时间都在那里。艾伦说我可以使用
Mage::getBaseDir('skin')
,我发现
Mage::getSingleton('core/design_package')->getPackageName()。我找不到获取皮肤目录最后一部分的方法。如果我当前的皮肤是
/skin/frontend/base/default/
,那么到目前为止,我已经把它放到了
/skin/frontend/base/
,我只需要让Magento给我目录的最后一部分,
/default/

我希望我在这里找错了方向,我可以调用一个很好的Mage::getModel方法,比如
$this->getSkinUrl
。你能帮忙吗?

试试这个:


Mage::getBaseUrl(Mage\u Core\u Model\u Store::URL\u TYPE\u SKIN)

你的假设完全正确,模型是
Mage\u Core\u model\u Design\u Package

因此,这就是诀窍:

echo Mage::getModel ( 'core/design_package' )->getSkinUrl ();
我确实发现这样做: 我知道我(或在本例中您)正在寻找的函数,所以我只是尝试获取文件所在的位置:

grep -Rni 'function getSkinUrl' .
./app/code/core/Mage/Core/Model/Design/Package.php:482:    public function getSkinUrl($file = null, array $params = array())
太好了,现在我只需要将文件转换为句柄,这样
Mage/Core/Model/Design/Package
就变成了
Core/Design\u Package

在注释中的一些核心查找过程中发现,另一种方法是使用:

Mage::getDesign()->getSkinUrl()

Mage::getSkinUrl('images/imagename.gif',数组('u secure'=>true))

那真让我恼火-我已经走了那么远了。我在找/skin/frontend/base/default/.Super,谢谢。我刚刚打开了那个PHP文件的盖子,我将对它进行一点挖掘。同时,这是正确的,并且完全按照我希望的方式工作。@user2036972顺便问一下,你在哪里尝试这样做?也许你只是因为忘记扩展或者扩展了错误的类而犯了这个错误。我很高兴你问到了哪里,而不是为什么!我正试图在/app/design/frontend/xxxx/xxxx/template/page/1column.phtml中实现这一点,我希望这意味着我可以使用一种不同的、更简单的方法,但您的代码可以在任何地方工作。不,我只是想知道。。。奇怪的是,代码说
1column.phtml
属于
Mage\u Page\u Block\u Html
类型,它最终扩展了
Mage\u Core\u Block\u Abstract
,函数
getSkinUrl
为define
return Mage::getDesign()->getSkinUrl($file,$params)(另一种获取所需内容的方法,就是
Mage::getDesign()->getSkinUrl()
)。。。所以使用
$this
应该行得通。最后一句话在我的脑海里把几件事联系在了一起。我现在要通过核心追踪一些东西。有道理,而且你提供的新代码也可以用,我来玩玩。非常感谢。致命错误:调用未定义的方法Mage::getSkinUrl()