获取Magento的皮肤path?

我有一些自定义的PHP函数,用于存储在myfunc.php中的Magento商店,我需要从几个不同的.phtml文件中获取它。 我怎么做?

我的意思是我可以使用绝对path,但是当迁移到另一台服务器时,这将是肮脏的,可能有问题。

现在我坚持:

require('/home/myuser/public_html/app/design/frontend/default/mytheme/myfunc.php'); 

如何以编程方式引用皮肤path(/ home / myuser / public_html / app / design / frontend / default / mytheme /)?

Magento主题处理实际url的方式就像这样(在部分视图中是phtml文件):

echo $this->getSkinUrl('images/logo.png');

如果您需要将磁盘上的实际基本path映射到映像目录,请使用:

echo Mage::getBaseDir('skin');

这个伟大的博客文章中提供了更多的基础目录types:

http://alanstorm.com/magento_base_directories

首先注意到

 Mage::getBaseDir('skin') 

返回Magento安装目录( / your / magento / dir / skin )的path。

您可以使用以下命令访问当前使用的外观目录

 Mage::getDesign()->getSkinBaseDir() 

该方法接受一个关联数组作为可选参数来修改结果。

以下键被识别:

  • _area 前端 (默认)或adminhtml
  • _包你的包
  • _主题你的主题
  • 当相对于Mage :: getBaseDir('skin')被设置(作为关键字)的path被返回。

所以在你的情况下,正确的答案是:

 require(Mage::getDesign()->getSkinBaseDir().DS.'myfunc.php'); 

在phtml中使用它适用于:

 echo $this->getSkinUrl('your_image_folder_under_skin/image_name.png'); 

在cms页面中使用皮肤path:

 <img style="width: 715px; height: 266px;" src="{{skin url=images/banner1.jpg}}" alt="title" /> 

这部分====> {{skin url = images / banner1.jpg}}

我希望这能帮到您。

要获取当前的皮肤 URL,使用这个Mage::getDesign()->getSkinUrl()

首先,不build议在devise文件夹中有function的PHP文件。 您应该创build一个新的模块或扩展(从核心复制到本地的助手,并添加到该类的function),而不要更改从应用程序/代码/核心文件。

要回答你的问题,你可以使用:

 require(Mage::getBaseDir('design').'/frontend/default/mytheme/myfunc.php'); 

最佳做法(作为开始)将在/app/code/local/Mage/Core/Helper/Extra.php中创build一个php文件:

 <?php class Mage_Core_Helper_Extra extends Mage_Core_Helper_Abstract { public function getSomething() { return 'Someting'; } } 

并使用它在phtml文件中使用:

 $this->helper('core/extra')->getSomething(); 

或者在所有的地方:

 Mage::helper('core/extra')->getSomething(); 

要获得该文件使用下面的代码。

 include(Mage::getBaseDir('skin').'myfunc.php'); 

但这不是一个正确的方法。 要添加您的自定义function,您可以使用下面的文件。

 app/code/core/Mage/core/functions.php 

请避免使用皮肤目录下的PHP函数。