【问题标题】:Get skin path in Magento?在 Magento 中获取皮肤路径?
【发布时间】:2012-04-28 02:32:05
【问题描述】:

我的 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/ )?

【问题讨论】:

  • 请不要将PHP函数代码放到主题中。这应该在模块中 (app/code/X/...)

标签: templates magento


【解决方案1】:

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

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

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

echo Mage::getBaseDir('skin');

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

http://alanstorm.com/magento_base_directories

【讨论】:

    【解决方案2】:

    首先要注意

    Mage::getBaseDir('skin')
    

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

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

    Mage::getDesign()->getSkinBaseDir()
    

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

    以下键被识别:

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

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

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

    【讨论】:

      【解决方案3】:

      要在 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=images/banner1.jpg}}

      希望对你有所帮助。

      【讨论】:

      • 它为当前接受的答案增加了什么?这与那里的建议完全相同。这应该是评论,而不是答案。查看metaSO question 和Jon Skeet: Coding Blog,了解如何给出正确答案。
      【解决方案4】:

      要获取当前皮肤 URL,请使用Mage::getDesign()-&gt;getSkinUrl()

      【讨论】:

      • 可以将路径作为参数传递Mage::getDesign()-&gt;getSkinUrl('image/example.png')
      【解决方案5】:

      首先,不建议将带有函数的php文件放在设计文件夹中。 您应该创建一个新模块或扩展(从核心复制到本地一个帮助程序并将函数添加到该类)并且不要更改应用程序/代码/核心中的文件。

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

      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();
      

      【讨论】:

        【解决方案6】:

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

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

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

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

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

        【讨论】:

        • 在 app/code/core 中所做的任何修改都将在 Magento 升级时被覆盖,因此不建议在该层次结构中进行任何更改。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        相关资源
        最近更新 更多