2012-09-06 13 views
6

w domyślnym układ opcje i dodać do koszyka przycisku nazywane są przezMagento - opcje podziału container1 i container2

<?php echo $this->getChildChildHtml('container1', '', true, true) ?> 

Chciałbym podzielić konfigurowalne opcje z wózka add-to- i pole ilości, aby pokazać je na innej pozycji w moim układzie. Wszelkie pomysły lub gotowe do użycia obejścia?

+0

Czy masz? Ja też potrzebuję linku "dodaj do koszyka" do instrukcji. – KarSho

+0

Ponieważ ten stary temat ma wiele widoków, chciałbym udostępnić moje obejście tego problemu. Spojrzałem na zawartość wewnątrz 'container1' i wyrenderowałem ją bezpośrednio w widoku-Szablon lub wywołałem zawartość za pomocą' getChildHtml' dla opcji produktu, która byłaby '$ this-> getChildHtml ('product_options_wrapper')'. – npostulart

Odpowiedz

0

Podczas gdy ostateczne rozwiązanie będzie zależeć od tego, gdzie te bloki muszą być przenoszone/włożony w układzie, można z pewnością podzielić „Dodaj do koszyka” product.info.options.wrapper.bottom się z konfigurowalnych opcji product.info.container1 lub product.info.container2 tak:

<catalog_product_view> 
    <reference name="product.info.container1"> 
     <action method="unsetChild"><name>product.info.options.wrapper.bottom</name></action> 
    </reference> 
    <reference name="product.info.container2"> 
     <action method="unsetChild"><name>product.info.options.wrapper.bottom</name></action> 
    </reference> 
</catalog_product_view> 

Najprostszym sposobem, aby następnie wyświetlić przycisk „Dodaj do koszyka” osobno jest wykomentuj warunkowego w catalog/product/view.phtml który umożliwia bloku product.info.addtocart zostać pokazane, czy produkt posiada opcje czy nie:

<?php if (!$this->hasOptions()): // Remove this condition ?> 
    <div class="add-to-box"> 
     <?php if($_product->isSaleable()): ?> 
      <?php echo $this->getChildHtml('addtocart') ?> 

      ... 

     <?php endif; ?> 
    </div> 

    ... 

<?php endif; ?> 

Mamy nadzieję, że pomoże to w zrozumieniu struktury tych bloków. Dodatkowe środki, które mogą być pomocne:

1

Można podzielić to bardzo łatwe (ale spędziłem dużo czasu, aby go znaleźć :)) - jeśli spojrzeć na app/code/core/Mage/Core/Block/Abstract.php do PHPDoc z funkcja publiczna getChildChildHtml, zobaczysz, że drugi parametr określa nazwę bloku potomnego. Tak, można zadzwonić najpierw przed blokiem cena czynią

<?php echo $this->getChildChildHtml('container1', 'product.info.options.wrapper', true, true) ?> 

i po bloku cen świadczonych zadzwoń

<?php echo $this->getChildChildHtml('container1', 'product.info.options.wrapper.bottom', true, true) ?>