2012-04-28 56 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