2012-06-11 1 views
2

첫째, 나는 here했지만Magento 테마 디렉토리를 얻는 방법은 무엇입니까?

$this->getSkinUrl() 

가 나는 그것이 URL을 반환하기 때문에 원하는 것을하지 않기 때문에 그 도움이되지 않습니다 경로

Mage::getBaseDir('skin'); 

피부의 기본 디렉토리를 반환하지 , 그들은 거기에 많은 테마가있을 수 있습니다 ..

나는 현재 테마 기본 디렉토리를 결정하고 싶습니다. 여기

답변

12

이 시도 :

Mage::getSingleton('core/design_package')->getSkinBaseDir() 
-4

는 현재에게 그 경로를 가져올 수

$_SERVER['DOCUMENT_ROOT'].parse_url($this->getSkinUrl(''),PHP_URL_PATH); 

자세한 내용 parse_url에 대한 방법입니다

+2

아야하지 이상적인 솔루션 –

+1

@sonia을 -이 답변이 승인 된 이유는 확실하지 않다. Magento와 같은 프레임 워크 내에서 가능하면이 코드를 사용하지 않으려 고 노력했습니다. –

+0

동의합니다. 이것은 테마 fallback을 완전히 파괴하기 때문에 Magento 내부에서 매우 열악합니다. 편집 된 파일을 패키지/테마로 옮기고 다른 모든 항목에 대해 시스템을 기본/기본으로 폴백해야하기 때문입니다. –

-1

가 많은 테마가 될 수 있지만 사용자가 설정 한대로 사용되며이 모든 갈 것이다

당신이 디렉토리를 찾고 있다면 시스템> 구성에 사용되었을 수 있습니다 패키지/테마> 디자인,

Mage_Cor에 방법 e_Model_Design_Package :: getSkinBaseDir()

public function getSkinBaseDir(array $params=array()) 
{ 
    $params['_type'] = 'skin'; 
    $this->updateParamDefaults($params); 
    $baseDir = (empty($params['_relative']) ? Mage::getBaseDir('skin').DS : ''). 
     $params['_area'].DS.$params['_package'].DS.$params['_theme']; 
    return $baseDir; 
} 

public function updateParamDefaults(array &$params) 
{ 
    if ($this->getStore()) { 
     $params['_store'] = $this->getStore(); 
    } 
    if (empty($params['_area'])) { 
     $params['_area'] = $this->getArea(); 
    } 
    if (empty($params['_package'])) { 
     $params['_package'] = $this->getPackageName(); 
    } 
    if (empty($params['_theme'])) { 
     $params['_theme'] = $this->getTheme((isset($params['_type'])) ? $params['_type'] : ''); 
    } 
    if (empty($params['_default'])) { 
     $params['_default'] = false; 
    } 
    return $this; 
} 
+0

getSkinUrl은 경로가 아닌 URL을 반환합니다. – skafandri

+0

내 대답이 업데이트되었습니다. –