2012-04-28 42 views
43

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

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

现在我坚持了:

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

如何我指的是皮肤路径(/家/ myuser的/的public_html /应用程序/设计/前端/默认/ mytheme的/)编程?

+1

请不要把PHP函数代码的主题。这应该在模块中('app/code/X/...') – Alex 2014-10-08 12:04:57

回答

104

是Magento的主题处理实际的URL是这样的方式(在视图的谐音 - PHTML文件):

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

如果您需要将图像目录使用磁盘上的实际的基本路径:

echo Mage::getBaseDir('skin');

一些更基本目录类型在这个伟大的博客文章可供选择:

http://alanstorm.com/magento_base_directories

-1

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

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

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

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

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

+0

在Magento升级时,app/code/core中所做的任何修改都将被覆盖,因此不宜在该层次结构中进行任何更改。 – 2012-10-08 20:42:58

13

要PHTML使用它适用于:

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

要在CMS页面中使用的皮肤路径:

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

这部分====> {{皮肤URL =图片/ banner1.jpg}}

我希望这会帮助你。

+0

它增加了目前接受的答案?这在那里也是一样的。这应该是一个评论,而不是一个答案。检查这个[metaSO问题](http://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question)和[Jon Skeet:Coding Blog]( http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx)如何给出正确的答案。 – Yaroslav 2012-10-11 18:25:12

17

首先要注意

Mage::getBaseDir('skin') 

回报只有你的Magento的路径皮肤目录中安装(/你/的Magento/DIR /皮肤)。

可以访问绝对路径使用目前使用的皮肤目录:

Mage::getDesign()->getSkinBaseDir() 

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

以下键确认:

  • _area前端(默认)或adminhtml
  • 加上_Package你的包
  • _theme你的主题
  • _relative当此设置(作为关键)相对于Mage :: getBaseDir('皮肤')的路径返回。

所以你的情况正确的答案应该是:

所有的
require(Mage::getDesign()->getSkinBaseDir().DS.'myfunc.php'); 
1

首先,它是不建议与设计文件夹功能的PHP文件。 您应该创建一个新模块或扩展(从核心复制到本地的助手并将功能添加到该类),并且不要从app/code/core更改文件。

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

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

最佳实践(为开始)将在/app/code/local/Mage/Core/Helper/Extra.php创建一个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(); 
8

为了得到当前皮肤 URL使用这种Mage::getDesign()->getSkinUrl()

+2

你可以通过路径作为参数'Mage :: getDesign() - > getSkinUrl('image/example.png')' – Justin 2015-05-15 20:23:28