當編寫一組新的.phtml文件時&代碼塊:
什麼是推薦方式以瞭解該塊當前是否在產品頁面上?
如果它在產品頁面上,那麼我該如何獲取當前正在查看的產品的數據?在magento中獲取產品或產品編號
感謝, 的Eyal
當編寫一組新的.phtml文件時&代碼塊:
什麼是推薦方式以瞭解該塊當前是否在產品頁面上?
如果它在產品頁面上,那麼我該如何獲取當前正在查看的產品的數據?在magento中獲取產品或產品編號
感謝, 的Eyal
第一個問題)如何知道您在產品視圖頁上。
你的問題並不清楚,因爲你沒有說這種功能的目的。我將你的問題解釋爲「我怎麼能知道它嵌入到產品視圖頁面而不是其他頁面?」。
最常見的方法是獲取頁面佈局並搜索標準塊以查看產品。因此,在你塊,你可以做以下請求:
$block = $this->getLayout()
->getBlock('product.info');
if ($block) {
// Block exists - you're viewing product page
}
另一種方法是檢查佈局手柄用來形成當前頁面佈局:
$handles = $this->->getLayout()
->getUpdate()
->getHandles();
if (in_array('catalog_product_view', $handles)) {
// Handle exists - you're viewing product page
}
但是它更具體的方法,它僅在查看產品頁面時返回肯定結果,而不是使用產品視圖塊返回具有類似設計的頁面。因此,示例產品評論頁面將向您顯示具有細微差異的相同產品頁面,但它使用它自己的(不是'catalog_product_view')句柄。就你說的目的而言,我不建議你選擇第一種或第二種方法。
注意:你的架構可以是錯誤的,因爲通常
A)您無論是塊並不需要知道它的嵌入,所以它並不需要不檢查當前瀏覽的頁面
b)或你的塊僅用於產品查看頁面。但在這種情況下,它是一個佈局xml任務,只能將您的塊放入所需的頁面和塊中。
第二個問題)如何獲得產品視圖頁面上當前的產品。
使用下面的代碼:
$product = Mage::registry('current_product');
,你會得到該產品目前觀察。
您可以查看當前請求的對象 - 它持有約模塊,控制器,動作,而params這是目前正在使用的所有數據。之後,你可以用產品頁面的人比較一下:的確模塊,控制器和動作相同,做產品ID匹配
,但你應該知道第三方定製這可能與他們的人
取代標準的Magento產品視圖控制器這會讓你知道什麼產品正在瀏覽。
Mage::registry('current_product')
如果有current_product
那麼你可能一個產品頁面上,雖然這並不能保證該頁面正在由目錄控制器處理。
所以你說你自己,這種方法不是一個好的... – epeleg 2011-01-10 11:31:42
我的意思是你應該從配置獲得產品視圖模塊和控制器,而不僅僅使用默認的一個 – 2011-01-10 12:19:04
o.k.你能提供更多細節嗎? 我認爲我必須以某種方式在佈局中查找產品視圖塊。因爲任何人都可以添加一個新的動作,最終將產品視圖添加到其中,不是嗎? 我Q的第二部分呢? – epeleg 2011-01-10 12:24:42