2011-11-15 38 views
1

因此,我一直在網上搜索幾個小時,我無法弄清楚這一點。

我寫了一個自定義的Magento模塊,它有一個自定義索引頁面,在一個Magento安裝(1.5.0.1)上可以正常工作,但在另一個(1.5.1.0)上不能正常工作。問題是,當我轉到模塊的主URL(domain.com/module)時,我的自定義模板文件未包含在內。

到目前爲止,我知道這一點: Magento佈局XML內容更新無法加載模板

  • 當頁面建立包含佈局XML
  • 如果包括我的var_dump($這個 - (因爲如果我故意搞亂了語法我得到SYSTEM.LOG錯誤)> getLayout() - > getUpdate() - > getHandles());在我的IndexController.php中,我可以看到:
    1)我的IndexController被調用,所以一定沒問題,並且
    2)我的模塊句柄被調用,並且具有與我在佈局XML文件中指定的完全相同的名稱。
  • 模板文件未被調用。我知道,因爲它應該拋出一個Magento異常,如果它(我包括一個不存在的函數調用該模板文件中的對象用於測試目的)。
  • 如果更改<塊類型= "標識符/動作"<塊類型=「核/模板」佈局XML文件中,被包括模板文件,但當然它不會工作正確,因爲自定義模塊的功能塊沒有定義。

  • 我絕對不知道我在哪裏可以看下,所以任何幫助將不勝感激。我知道它一定是簡單的因爲它在另一個Magento安裝完美地工作...

    +0

    你應該考慮購買@Alan Storm的Commercebug擴展。這是我花了很長時間花的最好的50美元。它確實有助於確切顯示哪些塊和模板文件正在加載。 –

    回答

    5

    我的猜測會是類別別名identifier/action不能正確解析到PHP/Magento塊類。檢查您的Magento異常日誌(var/log/exception.log,需要在管理控制檯中啓用日誌記錄),您可能會看到一些與「無效塊類型」相關的錯誤。

    嘗試運行

    $block = $this->getLayout()->createBlock('identifier/action'); 
    var_dump($block); 
    if($block) 
    { 
        $block->setTemplate('path/to/template.phtml'); 
        var_dump($block->toHtml()); 
    }  
    
    從PHP背景

    (控制器的動作),並檢查您塊實際上是被實例化。同樣值得檢查的是,您的模板文件實際上存在於您的主題中,並且您的自定義塊從模板塊繼承。

    +0

    非常感謝!實際上我的佈局xml文件或任何PHP文件都沒有錯。我包含的sql安裝腳本未能添加手動包含在其他站點的數據庫字段,並且完全忘記添加到安裝腳本中。你的建議看看exception.log是關鍵。不知道異常可能是如此狡猾:)我會期望該文件只顯示實際顯示在首頁上的異常。 – eleven59

    +1

    我會寫「...並且您的自定義塊從模板塊繼承「放學後黑板上的500次。謝謝。 – PartialOrder