44

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

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

现在我坚持:

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

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

4

6 回答 6

107

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

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

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

echo Mage::getBaseDir('skin');

这篇很棒的博客文章中提供了更多基本目录类型:

http://alanstorm.com/magento_base_directories

于 2012-04-28T04:39:31.637 回答
18

首先请注意

Mage::getBaseDir('skin')

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

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

Mage::getDesign()->getSkinBaseDir()

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

可识别以下键:

  • _area 前端(默认)或adminhtml
  • _打包你的包裹
  • _theme你的主题
  • _relative设置(作为键)相对于 Mage::getBaseDir('skin') 的路径返回。

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

require(Mage::getDesign()->getSkinBaseDir().DS.'myfunc.php');
于 2013-03-07T16:25:05.417 回答
13

要在 phtml apply 中使用它:

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" />

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

我希望这能帮到您。

于 2012-10-11T14:32:48.647 回答
8

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

于 2014-10-10T08:02:54.070 回答
1

首先,不建议在设计文件夹中包含带有函数的 php 文件。您应该创建一个新模块或扩展(从核心复制到本地助手并将函数添加到该类)并且不要更改来自 app/code/core.xml 的文件。

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

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();
于 2014-02-28T09:26:06.390 回答
-1

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

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

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

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

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

于 2012-04-30T13:31:27.357 回答