Magento - 获取皮肤 URL

Magento - Get the Skin URL

我想为我的 Magento 商店的皮肤调用 URL 以加载图像。我读到过您可以使用 <?php echo $this->getSkinUrl('images/ sampleimage.gif', array('_secure'=>true)) ?>,但我使用它得到了 "Call to undefined method"。我试过寻找此方法的 Mage::getModel 版本,但找不到。

我确实找到了 Alan Storm 的文章,这篇文章对我来说很重要:http://alanstorm.com/magento_base_directories。艾伦说我可以使用 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_Core_Model_Store::URL_TYPE_SKIN);

你的想法完全正确,模型是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()

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