Magento - 获取皮肤URL

3
我想调用Magento商店皮肤的URL,以加载一张图片。我已经阅读了可以使用<?php echo $this->getSkinUrl('images/ sampleimage.gif', array('_secure'=>true)) ?>,但是使用后我得到一个“未定义方法”的错误。我尝试查找此方法的Mage::getModel版本,但我找不到。
我确实发现了Alan Storm的文章,这让我走近了成功的道路:http://alanstorm.com/magento_base_directories。Alan说我可以使用Mage::getBaseDir(‘skin’),而我找到了Mage::getSingleton('core/design_package')->getPackageName()。我找不到获取皮肤目录最后部分的方法。如果我的当前皮肤是/skin/frontend/base/default/,则到目前为止我已经将其缩短为/skin/frontend/base/,我只需要能够让Magento给我最后的/default/目录。
我希望我在这里走错了方向,并且有一个很好的Mage::getModel方法可以调用,就像$this->getSkinUrl一样。你能帮助吗?
3个回答

5

您的假设是完全正确的,模型是Mage_Core_Model_Design_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_package

正如在评论中发现的一样,在某些核心查找方面,另一种方法是简单地使用:

Mage::getDesign()->getSkinUrl()

太好了,谢谢。我刚刚打开了那个PHP文件,我会仔细研究一下。与此同时,这很准确,正是我想要的方式。 - Markie
顺便问一下,您是在哪里尝试这样做的?也许您之所以会出现此错误,是因为您忘记了扩展或者扩展了错误的类。 - β.εηοιτ.βε
我很高兴你问的是在哪里而不是为什么!我正在尝试在/app/design/frontend/xxxx/xxxx/template/page/1column.phtml中完成它,我希望这意味着我可以使用不同、更简单的方法,但你的代码将在任何地方都能起作用。 - Markie
1
不,我只是在想...奇怪的是代码中说1column.phtmlMage_Page_Block_Html类型的,最终扩展了Mage_Core_Block_Abstract并定义了函数getSkinUrl,如下所示:return Mage::getDesign()->getSkinUrl($file, $params);(嘿,另一种获取你想要的东西的方法,只需使用Mage::getDesign()->getSkinUrl() )...所以使用$this应该可以工作。 - β.εηοιτ.βε
那最后的评论在我脑海中点燃了几个想法。现在我将不得不追溯一些核心代码。很有道理,您提供的新代码也有效,我会试着玩一下。谢谢! - Markie

1

Mage::getSkinUrl('images/imagename.gif', array('_secure'=>true));

Mage::getSkinUrl('images / imagename.gif',array('_ secure'=&gt; true));

1
致命错误:调用未定义的方法Mage::getSkinUrl() - Deus777

0
试试这个:

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);


那只是带我到 /skin/ 目录 - 我已经走到这一步了。我正在寻找 /skin/frontend/base/default/ 目录。 - Markie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接