簡體   English   中英

無法覆蓋Magento塊(可能與緩存有關)

[英]Cannot Override Magento Block (Possibly Cache Related)

由於某些奇怪的原因,我無法在生產服務器上覆蓋Mage_Catalog_Block_Product_List

我有Magento在我開發的本地運行,然后我同步到我的生產服務器,所以我很確定文件系統是相同的(緩存除外)。

這是我到目前為止已經完成-請注意,這是工作完全在本地,只是不是我由於某種原因,生產服務器上:

  • 創建了app/code/local/Mage/Catalog/Block/Product/List.php以覆蓋Core版本。

  • 添加了必要的代碼,在本地測試,可以正常工作。 更新的代碼僅更新_getProductCollection()函數,以便在設置了$_GET['newest']情況下,Magento按created_at日期對產品進行降序排序。 這在本地工作正常

  • 將我的更新同步到生產服務器。 沒有用,所以我認為它與緩存有關。

  • 關閉緩存,刷新索引。 依然沒有。

  • 刪除的var/cache文件,仍然沒有。

  • 比較了后端配置,看是否有任何問題。 一切看起來都很好。

  • 在生產版本的新塊(List.php)中添加了無效代碼,這樣會導致錯誤。 沒有錯誤(?!)。 好像我上傳的新文件被忽略了。

任何想法都將不勝感激,因為我對想法不知所措。

我正在使用Magento v 1.7.0.2

您的生產服務器是否使用Magento編譯模式? Magento編譯模式並不是真正的編譯,它只是將所有類文件從代碼庫中復制出來,然后放在一個文件夾中。 這極大地提高了PHP(特別是較舊的版本)的速度。 如果您已將新文件上傳到本地代碼池中以供覆蓋,並且您使用的是編譯模式,則可能需要重新編譯類( System -> Tools -> Compilershell/的命令行腳本) shell/文件夾)。

另外,您的生產系統是否使用APC? 如果是這樣,則PHP已將類的舊版本緩存到APC中,並且在您清除APC緩存之前不會查看您的新版本。

最后-您是要從Mac / Windows計算機上傳到UNIX環境嗎? 如果是這樣,請嘗試在文件上查找“非常困難”,以區分大小寫錯誤。 我通常會盡量從根文件夾嘗試顯式ls ,以確保文件路徑的命名方式與我認為的相同。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM