获取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:
首先注意到
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函数。