2010-04-07 40 views
1

我向我的產品添加了新屬性(布爾型「是/否」字段)。這是一個變量,用於啓用/禁用在產品詳細信息頁面和網格視圖中顯示的價格。無法在網格顯示中獲取新產品屬性

我設法讓它在產品信息頁面上工作。但在產品網格頁面上,我似乎無法訪問該變量。具體來說,我正在使用的模板是catalog/product/price.phtml。從我所知道的情況來看,價格正在產品詳細信息頁面和網格頁面上的同一組if語句中顯示。這讓我感到困惑,因爲我無法在該模板上找到任何代碼來處理多個產品,只是一堆嵌套的if語句。

這是如何即時嘗試訪問這個新變量使用$ _displayPrice。 在目錄/產品線36/price.html

<?php $_product = $this->getProduct(); ?> 

<?php $_id = $_product->getId() ?> 
<?php $_displayPrice = $_product->getDisplayPrice() ? "Yes" : "No"; 

echo $_displayPrice;?> 

什麼有我進一步感到困惑的是,當顯示$ _product->的getData(),我的新的變量是數據中沒有任何地方。

在此先感謝

回答

3

好吧,首先你的屬性不會加載的原因。 Magento使用EAV模型來存儲目錄數據。這意味着(大部分情況下)getData數組中的每一條數據都來自表連接。這意味着Magento對於如何從數據庫請求數據很吝嗇。如果它不需要你的領域,它不會費心去包含它(並且會節省一些查詢時間)。

因此,在加載目錄類別頁面時,Magento使用Mage_Catalog_CategoryController和視圖操作。通過Magento的魔力,這隨後調用Mage_Catalog_Model_Layer::getProductCollection,它加載所有必要的屬性。它如何選擇包含哪些屬性,你說?當然,它從Mage_Catalog_Model_Config::getProductCollectionAttributes的配置中獲取它們!所以,如果我們想要包含您的新屬性,我們需要更改配置。

望着配置文件,來處理這列裝載爲frontend/product/collection/attributes,所以你需要將以下添加到擴展的config.xml文件的路徑:

<frontend> 
    <product> 
     <collection> 
      <attributes> 
       <display_price /> 
      </attributes> 
     </collection> 
    </product> 
</frontend> 

這將增加display_price屬性默認情況下加載到產品集合中的屬性列表,現在您應該能夠調用$_product->getDisplayPrice()並獲取要查找的數據。

確保清除緩存之後,您希望看到任何更改!

希望有所幫助。

謝謝, 喬

+0

揭祕一切!通過將我的if語句添加到catalog/product/view.html來解決此問題,而隻影響產品詳細信息。理想情況下,我可以使用您給我的信息來修復price.phtml,這樣我就不會在隨機模板中添加很多unessasary if-statements。 謝謝你! – russjman 2010-04-08 01:10:44

+0

我仍然無法訪問新的屬性。我將它們添加到app/core/Mage/Catalog/etc/config.xml中的列表中,並且將網站緩存打亂。我認爲添加那裏會使他們在template/catalog/product/list.phtml中可訪問。 – russjman 2010-04-08 18:48:32

+2

它只是我,還是Magento真的過於複雜和臃腫? :| – jayarjo 2011-08-08 16:56:24

相關問題