2

シンプルな製品 (シンプルな製品のみ) のカスタム オプション (タイプ: ラジオ入力) を右側の列に移動することを切望しています。

現在、それらはページの下部にある「container2」というコンテナーに表示されているようで、次のように view.phtml 内で呼び出されます。

<div class="clearer"></div>
<?php if ($_product->isSaleable() && $this->hasOptions()):?>
<?php echo $this->getChildChildHtml('container2', '', true, true) ?>
<?php endif;?>

Container2 は、コンテンツ ブロック内のレイアウト ファイル catalog.xml にもあります。

したがって、私がしたことは、オプション ラッパーを参照 name="content" ブロックから移動するだけで、新しいブロック: reference name="right" です。

なんらかの理由で、コードは実際には適切にフォーマットされておらず、一部のビットが欠落しているため、ここに貼り付けました: http://pastebin.com/nhCUXcF4

基本的に、右側の列にオプションが表示されますが、オプションを再度選択するように求められるため、ラジオ入力をクリックしてもチェックされていないようです (必須です)。

オプションを content ブロックの下部にある container2 のままにしておくと、オプションをクリックした場合と同じように正常に機能し、正しくチェックされます。何もチェックせずにカートに追加をクリックすると、必要なオプションを選択するよう求められます。

問題は、私が本当に理解していない container1 、 container2 から来ていると思います。また、カタログ XML には、次のようなコードのビットがあることがわかります

<block type="core/template_facade" name="product.info.container2" as="container2">
<action method="setDataByKey"><key>alias_in_layout</key><value>container2</value>    </action>
   <action method="setDataByKeyFromRegistry"><key>options_container</key
    <key_in_registry>product</key_in_registry></action>
 <action method="append"><block>product.info.options.wrapper</block></action>
 <action method="append"><block>product.info.options.wrapper.bottom</block></action>
</block>

基本的に私の質問は、必要なオプションをview.phtml(製品ページ)のコンテンツから右の列に適切に移動するにはどうすればよいですか? 今すぐどんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

2

これを行うには、もっと簡単な方法があります。

3 列または 2 列右のレイアウトを使用する代わりに、1 列のレイアウトを使用してから、次のように製品ビュー テンプレート ファイルに右側の列を追加します。

<div class="col-right sidebar">
    <?php if ($_product->isSaleable() && $this->hasOptions()):?>
    <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
    <?php endif;?>
</div>

ブロックなどを変更するよりも、製品ビュー ページの CSS を変更する方がはるかに簡単です。

于 2013-03-01T16:41:11.030 に答える