【问题标题】:Is it possible to create a custom product view page in magento是否可以在 magento 中创建自定义产品视图页面
【发布时间】:2013-12-10 08:57:09
【问题描述】:

我是 magento 的新手,我需要在 magento 中有两个产品视图页面。 一个用于本地产品,另一个用于国际产品。我已经自定义了默认产品视图页面以显示本地产品。 当我点击我在默认产品视图页面中提供的“国际产品”链接时,将显示国际产品视图页面。我为国际产品创建了一个名为“国际”的功能齐全的模块。但现在我完全混乱了。

如何使我的自定义模块功能与默认产品视图页面完全一样?这是制作另一个产品视图页面的正确方法吗?

请提出建议。

【问题讨论】:

  • 学习覆盖 phtmls.then 你可以轻松做到。
  • 感谢@Mahmood Rehman 的回复。你能给我推荐一些参考页面吗?
  • 我认为对这两个操作使用相同的视图页面会更好。而在页面开始时设置一些变量并显示数据。
  • 您的意思是当在同一页面中单击“国际产品”链接时,我需要加载国际产品。不是吗?
  • 是的,但对某种变量值(如 session 或 block_id)执行此操作。我以前没有这样做,但我希望它有效。

标签: php magento magento-1.7


【解决方案1】:

你可以通过两种方式做到这一点。

  1. 在产品的编辑页面上的管理产品中,您可以在设计选项卡中定义自定义布局。 但是,您必须为所有想要进行新设计的产品做同样的事情,并且将来很难管理使用哪种布局的产品。
  2. 为产品提供一个下拉属性让我们说 locality_type 选项“国际”,“本地”,然后在布局处理程序的帮助下根据属性值动态更改布局。

我发现第二种方法非常方便,因为我可以根据属性值确定我的布局正在更改,并且更改此属性值将轻松更改我的布局。

这就是它的实现方式。

app/code/core/Mage/Catalog/Helper/Product/View.php 中更新initProductLayout 方法

$update->addHandle('PRODUCT_' . $product->getId());之后放置这些行

if($product->getAttributeText('locality_type')=='International')
    $update->addHandle('PRODUCT_INTERNATIONAL');
if($product->getAttributeText('locality_type')=='Local')
    $update->addHandle('PRODUCT_LOCAL');

现在更新{theme}/layout/catalog.xml。在</PRODUCT_TYPE_virtual> 之后放置这些行

<PRODUCT_INTERNATIONAL>
    <reference name="product.info">
        <action method="setTemplate"><template>catalog/product/view_international.phtml</template></action>
    </reference>
</PRODUCT_INTERNATIONAL>
<PRODUCT_LOCAL>
    <reference name="product.info">
        <action method="setTemplate"><template>catalog/product/view_local.phtml</template></action>
    </reference>
</PRODUCT_LOCAL>

现在剩下的就是你必须在{theme}/template/catalog/product 中创建view_local.phtmlview_internationl.phtml 这两个文件

您可以在视图文件中放置不同的代码以使它们看起来不同。对于进一步的更改,您在catalog.xml 中有自己的处理程序标记。随意使用。

【讨论】:

  • 非常感谢。这似乎是解决我的问题的好方法。\
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多