在Magento获取皮肤路径?

时间:2012-04-28 02:32:05

标签: templates magento

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

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

现在我坚持:

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

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

6 个答案:

答案 0 :(得分:105)

Magento主题处理实际网址的方式是这样的(在视图中显示部分 - phtml文件):

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

如果您需要磁盘上的实际基本路径使用:

echo Mage::getBaseDir('skin');

这篇精彩的博文中提供了更多基本目录类型:

http://alanstorm.com/magento_base_directories

答案 1 :(得分:18)

首先请注意

Mage::getBaseDir('skin')

返回Magento安装的skin目录的唯一路径( / your / magento / dir / skin )。

您可以使用以下方式访问当前使用的皮肤目录的绝对路径:

Mage::getDesign()->getSkinBaseDir()

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

识别以下键:

  • _area 前端(默认)或 adminhtml
  • _package 您的套餐
  • _theme 您的主题
  • _relative 当设置(作为键)相对于Mage :: getBaseDir('skin')的路径时,返回。

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

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

答案 2 :(得分: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" />

这部分====&gt;     {{skin url = images / banner1.jpg}}

我希望这会对你有帮助。

答案 3 :(得分:8)

要获取当前皮肤网址,请使用此Mage::getDesign()->getSkinUrl()

答案 4 :(得分: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();

答案 5 :(得分:-1)

要获取该文件,请使用以下代码。

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

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

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

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