以magento获取Product或ProductID

epe*_*leg 1 magento

在编写一组新的.phtml和块时:建议
该块当前是否在产品页面上的推荐方法是什么?
如果它在产品页面上,那么如何获取当前正在查看的产品的数据?

谢谢,Eyal

And*_*kus 6

第一个问题)如何知道您在产品视图页面上.

你的问题不明确,因为你没有说出这种功能的目的.我将您的问题解释为"我的块如何知道它是嵌入在产品视图页面中而不是在其他页面中?".

最常见的方法是获取页面布局并搜索标准块以查看产品.因此,在您的区块中,您可以提出以下请求:

$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)

并且您将获得当前查看的产品.