2013-06-03 43 views
0

我有一個代碼在magento,我需要覆蓋,代碼可以在/app/code/core/Mage/Core/Model/Config/Options.php找到。每個商店都有自己的媒體文件夾?

的代碼是這樣的:

protected function _construct() 
    { 



     $appRoot= Mage::getRoot(); 
     $root = dirname($appRoot); 

     $this->_data['app_dir']  = $appRoot; 
     $this->_data['base_dir'] = $root; 
     $this->_data['code_dir'] = $appRoot.DS.'code'; 
     $this->_data['design_dir'] = $appRoot.DS.'design'; 
     $this->_data['etc_dir']  = $appRoot.DS.'etc'; 
     $this->_data['lib_dir']  = $root.DS.'lib'; 
     $this->_data['locale_dir'] = $appRoot.DS.'locale'; 
     $this->_data['media_dir'] = $root.DS.'default_media'; 
     $this->_data['skin_dir'] = $root.DS.'skin'; 
     $this->_data['var_dir']  = $this->getVarDir(); 
     $this->_data['tmp_dir']  = $this->_data['var_dir'].DS.'tmp'; 
     $this->_data['cache_dir'] = $this->_data['var_dir'].DS.'cache'; 
     $this->_data['log_dir']  = $this->_data['var_dir'].DS.'log'; 
     $this->_data['session_dir'] = $this->_data['var_dir'].DS.'session'; 
     $this->_data['upload_dir'] = $this->_data['media_dir'].DS.'upload'; 
     $this->_data['export_dir'] = $this->_data['var_dir'].DS.'export'; 
     } 

我需要改變默認的媒體,每個店都有自己的媒體文件夾。所以我做了功能...

public function getMediaFromStore(){ 
    $fullMediaUrl=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); 
    $baseUrl = Mage::getBaseUrl(); 
    echo substr(Mage::getBaseUrl($fullMediaUrl, strlen($baseUrl)); 
} 

而且比,而不是

$this->_data['media_dir'] = $root.DS.'default_media'; 

我把

$this->_data['media_dir'] = $root.DS.$this->getMediaFromStore(); 

我得到了該死的錯誤,這是這樣的......

Fatal error: Call to a member function getOptions() on a non-object in /home/cofamedia/www/magento/app/Mage.php on line 328

im im stucked,有沒有人有一些exp lanation如何去解決這個錯誤。併爲每個商店Magento中的每個媒體文件夾做。謝謝。

+0

有什麼意義?所見即所得文件的分離...? – benmarks

+0

@benmark是的,就是這一點。 – stefankuburovic

回答

0

這是一個非常粘性的變化。 如果您需要在覈心類中實現此更改,則最好將該文件複製到app/code/local/Mage/Core/Model/Config/Options.php並將其更改爲防止在升級時覆蓋。

但是,我認爲最好在CMS WYSIWYG建模中實現一個更改以添加商店路徑。我不確定所有需要查找&的地方都可能會改變行爲並且值,但您可以從Mage_Cms_Helper_Wysiwyg_Images::getStorageRoot()開始。

請注意,寫入和讀取存儲(文件系統路徑)的路徑與前端(URL路徑)中需要的不同。你目前的例子是試圖爲後者使用後者,除非你用文件操作和URL包裝進行瘋狂的事情。

+0

我明白了,你在告訴我什麼,謝謝,我現在就試試。 – stefankuburovic

+0

它不會工作.... :(但我不會放棄...你知道任何方式來做到這一點,請幫助,謝謝。 – stefankuburovic

相關問題