2013-06-06 39 views
0

我已經非常徹底地研究了這個話題,但是找不到答案。

我正在試圖將一個Magneto頭放入一個WordPress頁面。我創建了一個新的wordpress模板並添加了以下代碼。

try { 
    require_once ABSPATH . '/app/Mage.php'; 

    if (Mage::isInstalled()) { 
     $mage = Mage::app(); 
     Mage::getSingleton('core/session', array('name' => 'frontend')); 

     if(Mage::getDesign()->designPackageExists('xxx')) { 
      Mage::getDesign()->setPackageName('xxx'); 
      Mage::getDesign()->setTheme('xxx');    
     } 


     // init translator 
     $mage->getTranslator()->init('frontend'); 

     // init head 
     $head = $mage->getLayout()->getBlockSingleton('page/html_head');   
} } 

然後有點模板後面我有

echo $head->toHtml(); 

現在正在發生的事情是頭部的某些部分正在呼應和一些地方都沒有。

當我進入head.phtml並試圖找出發生了什麼事我注意到,包含

$this->getChildHtml() 

任何線沒有得到迴應。

我看着this example並注意到作者正在手動添加html和CSS。爲什麼是這樣?爲什麼不自動添加?這是一個相關的問題

謝謝

回答

0

要顯示標題塊內部生成的塊,需要先創建它,然後將其設置爲標題塊的子項。

例如。下面是我在WordPress中如何顯示Magento的頭塊,包括被直到最底層的()原header.phtml內部產生的貨幣下拉框:

Mage::getSingleton('core/session', array('name' => 'frontend')); 
$session = Mage::getSingleton("customer/session"); 
$layout = Mage::getSingleton('core/layout'); 

$headerBlock = $layout->createBlock('page/html_header')->setTemplate('page/html/header.phtml'); 
$currencyBlock = $layout->createBlock('directory/currency')->setTemplate('currency/currency.phtml'); 
$headerBlock->setChild('currency_selector', $currencyBlock); 
$headerBlock = $headerBlock->toHtml(); 

然後,你可以寫在你需要它的塊在頁面上:

echo $headerBlock; 

我知道這有點晚,但希望這可以幫助其他人解決這個問題。

+0

我想加載我目前的主題標題,我們如何加載。 –

0

您是否熟悉如何呈現magento佈局?隨着$head = $mage->getLayout()->getBlockSingleton('page/html_head');你創建一個沒有任何孩子的新塊。這就是爲什麼作者需要再次添加JS和CSS。要加載默認頭塊,請看這個線程Load block outside Magento。你可以加載它$layout->getBlock('head')->toHtml();