2012-11-27 15 views
4

我正在爲magento 1.7定製塊。我有我的配置XML中聲明的塊。這個模塊還有一個定義好的控制器,它工作正常。我需要一個具有邏輯背後邏輯的新塊,所以我想我會使用我已經創建的模塊。我已經在下面包含了塊聲明。Magento自定義塊中斷站點。爲什麼?

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
<modules> 
    <Company_Catalog> 
     <version>0.1.0</version> 
    </Company_Catalog> 
</modules> 
<global> 
    <blocks> 
     <catalog> 
      <class>Company_Catalog_Block</class> 
     </catalog> 
    </blocks> 
</global> 
</config> 

我使用此語法使用的塊的local.xml中在我的主題:

<block type="catalog/featured" name="featuredproducts" before="-" template="catalog/featured.phtml"/> 

出現的塊像我希望它,但問題是,其餘的大部分的網站被破壞,exception.log中充滿了magento在我的模塊中尋找其他塊。示例:

2012-11-27T19:34:47+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type:Company_Catalog_Block_Product_List' in /home/project/site_content/app/Mage.php:594 
2012-11-27T19:34:47+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type: Company_Catalog_Block_Product_List_Toolbar' in /home/project/site_content/app/Mage.php:594 

我不想重寫任何現有的塊,只需在我已經聲明的模塊中添加一個新的塊即可。

我明顯地告訴Magento在我的模塊中查看比我想要的更多。這是我第一次嘗試使用Magento中的自定義塊,所以我不確定我做錯了什麼。

我知道Mage命名空間中也使用了「Catalog」,但我正在使用自己的命名空間。據我所知,不應該有衝突。

感謝

回答

5

要覆蓋原來的目錄塊類前綴法師/目錄的/ etc/config.xml中

<global> 
    <blocks> 
     <catalog> 
      <class>Mage_Catalog_Block 

通過這樣做,對於一個目錄塊類型每一個請求( type="catalog/...")使用的前綴將是Company_Catalog_Block

+0

感謝您的回覆。所以我認爲,對於塊,我最好使用一個根本不出現在覈心中的模塊。正確? – ddhahn

+1

@ddhahn如果你想創建自定義塊,那麼是的,使用核心不使用的「組名」(即「目錄」)。我的標準做法是使用完整的軟件包/模塊名稱(即 ...)。它有點冗長,但避免了任何可能的命名空間衝突。 –