0

すべての製品ビューの左側の列product.info.mediaからブロックを移動したかったのです。catalog.xml

local.xmlこれを実現するために、ファイルに2行追加しました。

<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のデフォルトファイルとバイナリで同一です。

奇妙なことに、Webページの製品画像に次のコードが含まれています。

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

なぜトップにスタイルが定義されているのですか?!このスタイルは要素内で定義されているため、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で設定されます。これは、デフォルトの画像ズーム操作の一部です。これが、私と同じようにGoogleを通じてこの投稿に出くわした人の助けになることを願っています。

magento 1.7.2では、/ js/ product.jsの263行目に次のように表示されます。

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

簡単なハックとしてコメントアウトすることもできますが、ニーズに合ったズームJavaScript機能を採用することを強くお勧めします。

于 2013-08-06T20:51:16.463 に答える