Magento 1.x 从前端获取管理员皮肤 URL 的最佳方式

Magento 1.x Best way to get admin skin URL from frontend

获取当前管理员皮肤主题目录的 URL 路径的最佳方法是什么。

我知道

Mage::getModel('core/design_package')->getSkinUrl();

其中return前端皮肤主题目录URL。是否有等效的 Adminhtml?

非常感谢

这是获得安全皮肤的最佳方式URL:

$this->getSkinUrl('images/imagename.gif', array('_secure'=>true));

获得不安全的皮肤URL:

$this->getSkinUrl('images/imagename.jpg');

核心 Magento 在核心代码中使用这个:

Mage::getDesign()->getSkinUrl('images/image.gif');

调用:

public static function getDesign()
{
    return self::getSingleton('core/design_package');
}

它们是等效的,除了 $this 可能无法在所有 contexts/cases 中工作所以我建议使用 Mage::getDesign() 以避免出现问题。

PHP 5.3 在某些情况下使用 $this 有一些问题。

您也应该能够始终如一地使用 Mage::getSingleton('core/design_package');

Magento 识别出您从哪个 'area' 调用 getDesign,所以...

要调用 adminhtmlfrontend 区域并获取它们的皮肤 url,请使用:

$oDesign = Mage::getDesign()->setArea( 'adminhtml' );
$oDesign = Mage::getDesign()->setArea( 'frontend' );
var_dump( $oDesign );
$sUrl = $oDesign->getSkinUrl('images/image.gif');
var_dump( $sUrl );

管理员皮肤url,您可以使用:

<?php echo Mage::getDesign()->getSkinBaseUrl(array('_area'=>'adminhtml')) ?>

这个方法可以在app/code/core/Mage/Core/Model/Design/Package.php中找到。

如果你想要某些 package/theme.

的 url,你也可以通过数组传递其他参数,如 _package_theme