0

我想从所有产品视图的左栏中移动product.info.media块。catalog.xml

为了实现这一点,我在local.xml文件中添加了两行:

<catalog_product_view>
    <reference name="left">
        <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
    </reference>
    <reference name="product.info">
        <action method="unsetChild"><child>media</child></action>
    </reference>
</catalog_product_view>

media.phtml 是二进制文件,与 1.7.0.2 版本的 magento 中的默认文件相同。

奇怪的是,网页上的产品图片有这样的代码:

<img id="image" src="path/to/image.jpg" alt="" title="" style="position: relative; left: 0px; width: 220px; top: 215px;">

为什么要为 top 定义样式?!由于这种样式是在元素内部定义的,我什至无法用 css 更改它。谁能解释magento的这种行为?

media.phtml 中创建此内容的行如下所示:

    $_img = '<img id="image" src="'.$this->helper('catalog/image')->init($_product, 'image').'" alt="'.$this->htmlEscape($this->getImageLabel()).'" title="'.$this->htmlEscape($this->getImageLabel()).'" />';
    echo $_helper->productAttribute($_product, $_img, 'image');

他们将我带到app/code/core/Mage/Catalog/Helper/Output.php了 productAttribute 函数的定义位置。但为什么看在上帝的份上是顶级风格呢?这根本没有意义。如果我想设置它,我会使用 css。

提前致谢。

4

1 回答 1

0

我刚刚花了 3 个小时来解决这个问题……解决方案?元素样式(包括 'top')在 (drumroll) /js/product.js中设置。这是默认图像缩放操作的一部分。希望这可以帮助那些像我一样通过谷歌看到这篇文章的人。

在 magento 1.7.2 中,/ js/ product.js的第 263 行显示:

this.imageEl.style.top = this.imageY+'px';

作为一种快速破解,您可以将其注释掉,但我强烈建议您调整适合您需求的缩放 JavaScript 功能。

于 2013-08-06T20:51:16.463 回答