在编写一组新的.phtml和块时:建议
该块当前是否在产品页面上的推荐方法是什么?
如果它在产品页面上,那么如何获取当前正在查看的产品的数据?
谢谢,Eyal
第一个问题)如何知道您在产品视图页面上.
你的问题不明确,因为你没有说出这种功能的目的.我将您的问题解释为"我的块如何知道它是嵌入在产品视图页面中而不是在其他页面中?".
最常见的方法是获取页面布局并搜索标准块以查看产品.因此,在您的区块中,您可以提出以下请求:
$block = $this->getLayout()
->getBlock('product.info');
if ($block) {
// Block exists - you're viewing product page
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是检查用于形成当前页面布局的布局句柄:
$handles = $this->->getLayout()
->getUpdate()
->getHandles();
if (in_array('catalog_product_view', $handles)) {
// Handle exists - you're viewing product page
}
Run Code Online (Sandbox Code Playgroud)
然而,这是更具体的方法,它仅在查看产品页面时返回正结果,而不是使用产品视图块的类似设计的页面.例如,"产品评论"页面将显示相同的产品页面,但略有不同,但它使用自己的(不是"catalog_product_view")句柄.至于你没有说明你的目的,我不建议你选择第一种或第二种方法.
注意:您的体系结构可能是错误的,因为通常
a)您的块不需要知道它嵌入的位置,因此它不需要检查当前查看的页面
b)或您的块仅用于产品视图页面.但在这种情况下,它是一个布局xml任务,只将块放在所需的页面和块中.
第二个问题)如何在产品视图页面上获取当前产品.
使用以下代码:
$product = Mage::registry('current_product');
Run Code Online (Sandbox Code Playgroud)
并且您将获得当前查看的产品.
| 归档时间: |
|
| 查看次数: |
9595 次 |
| 最近记录: |