AJAX ile kategori listesine ürün görünümü yükleniyor


14

Ajaxify kullanarak AJAX ile kategori listesi sayfasında ürün görünüm bloğunu yüklemeye çalışıyorum . Seçenek kutusunun (childhtml "container1") doğru yüklenmemesi tek sorun olarak her şey yolunda gider. Seçenekleri göstermez.

Herkes böyle bir deneyim var, belki böyle bir şey denedim? Aktif ürünü kontrol cihazında kullanarak

$productId  = (int) $this->getRequest()->getParam('product_id');
Mage::helper('catalog/product')->initProduct($productId, $this);

düzeni oluşturmadan önce.

Bence seçenekler katalog.xml başka bir bölümü görünümüne eklenmesi ile ilgili bir şey var

[...]
<PRODUCT_TYPE_configurable translate="label" module="catalog">
   <label>Catalog Product View (Configurable)</label>
   <reference name="product.info">
      <block type="catalog/product_view_type_configurable" name="product.info.configurable" as="product_type_data" template="catalog/product/view/type/default.phtml">
         <block type="core/text_list" name="product.info.configurable.extra" as="product_type_data_extra" translate="label">
            <label>Product Extra Info</label>
         </block>
      </block>
   </reference>
   <reference name="product.info.options.wrapper">
      <block type="catalog/product_view_type_configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="catalog/product/view/type/options/configurable.phtml"/>
   </reference>
</PRODUCT_TYPE_configurable>
[...]

ama kesin sorunun ne olduğundan emin değilim.

Umarım birisi beni doğru yöne yönlendirebilir.

Saygılarımızla, Sander Mangel


1
Sander - Ajaxify uzantısına hızlıca göz attım ve onu nasıl kullandığınız belli değil. Ajaxify'ı aramak için kullandığınız tam javascript (veya PHP + javascript) nedir ve denetleyiciye (varsa) eklediğiniz kod veya isteği işlemek için Ajaxify mizanpaj XML'i nedir? Temel olarak, sorunu bizim tarafımızdan yeniden oluşturmak için bize yeterli bilgi verin ve muhtemelen doğru yönde ilerlemenizi sağlayabiliriz.
Alan Storm

Sadece basit tutmak için, Ajaxify kullanarak kodumu yeniden yazmaya karar verdim. Sorun devam ederse, uzantı kaynağını soruyla birlikte gönderin. Muhtemelen çok daha kolay.
Yorumunuz

Sen ajax katalog yükleme fme magento uzantısı kullanabilirsiniz, kaydırma ürün yükler. daha fazla ürünün yükleneceği düğmeyi tıklayarak da bir düğme ekleyebilirsiniz. fmeextensions.com/magento-ajax-catalog-pro.html

Hey @SanderMangel, uzantıyı açtınız mı? Thx
joseantgv

Yanıtlar:


7

Bir kategori listesi sayfasına hızlı bir görünüm açılır penceresi eklemeye çalışırken geçmişte benzer bir sorun yaşadık. Karşılaştığımız sorunlardan birkaçı: -

  • /js/varien/product.js& /js/varien/configurable.jsyapılandırılabilir açılır listelerin oluşturulması için gereken kategori listesi sayfasına varsayılan olarak dahil edilmez. Aşağıdaki satır içi JS bunu gerektirir.

    <script type="text/javascript">
        var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
    </script>
  • Sahip olduğumuz bir başka sorun, sayfa başına bunlardan birden fazlasını dahil etmeye çalışırken, yinelenen kimliklerle ilgili sorunlar alıyorduk, her durumda bu kendiniz için geçerli olmayabilir, ancak kapalıyken bunları yok ettiğiniz birden fazla olup olmadığınızdan emin olun.

Bunu yapma şeklimiz, benzersiz düzen tutamacını kullanmamızı sağlayan boş bir denetleyici dosyası oluşturmaktır. Aşağıdaki xml'yi kullanabilirsiniz.

 <custom_catalog_product_ajax_view>
        <update handle="catalog_product_view" />
        <remove name="html_calendar" />
        <reference name="root">
                <action method="setTemplate"><template>custom/catalog/ajax/product/response.phtml</template></action>
        </reference>
        <reference name="product.info">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view.phtml</template></action>
                <action method="append">
                    <block>breadcrumbs</block>
                </action>
        </reference>
        <reference name="product.info.media">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view/media.phtml</template></action>
        </reference>
        <reference name="product.info.options.configurable">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view/type/options/configurable.phtml</template></action>
        </reference>
</custom_catalog_product_ajax_view>

Bu, ilgili blokları dahil edebileceğimiz ve normal ürün sayfasının belirli yönlerini özelleştirebileceğimiz anlamına geliyordu.

Gerekli JS dosyalarını eklemek için bunu tanıtıcıya da ekledik.

<catalog_category_default>
    <update handle="required_for_catalog_ajax_product_view" />
</catalog_category_default>

<required_for_catalog_ajax_product_view>
        <reference name="head">
                <action method="addJs"><script>varien/product.js</script></action>
                <action method="addJs"><script>varien/configurable.js</script></action>
        </reference>
</required_for_catalog_ajax_product_view> 

Response.phtml dosyamız da şöyle görünüyor

<?php echo Zend_Json::encode(array(
'success' => true,
'html' => $this->getChildHtml('content'),
'optionsPrice' => $this->getOptionsPrice(),
'spConfig' => $this->getSpConfig()
));

Umarım bu, yanlış yaptığınız yere biraz ışık tutmanıza yardımcı olabilir


Hey Luke, bence bu çözüm olabilir. Tüm uzantıyı yeniden yazıyorum. Eğer işe yaramazsa bu yazıyı awnser olarak işaretleyin (ve elbette uzantıyı açık kaynaklayın). Teşekkürler!
Sander Mangel

1

Sorun, seçeneklerin katalog / ürün / görünüm / tür / seçenekler / configurable.html dosyasında HTML olarak değil JavaScript aracılığıyla eklenmesidir:

<script type="text/javascript">
    var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
</script>

Ajax betiğiniz HTML'nin yerini alıyor gibi görünüyor, ancak içindeki JS'yi çalıştırmıyor. Bu parçayı manuel olarak yürütmeniz gerekir, ancak bunu yapmanın birkaç yolu vardır:

  • preg_match etiketleri içindeki her şeyi eşleştirin ve eval ile çağırın
  • çıktınızı html ve javascript bölümüne bölün, böylece her ikisini de ayrı ayrı alabilirsiniz

Selam Tobias, fısıltı için teşekkürler. Javascript yürütülmüyor haklısın ama yine de seçenekler için hazırlanıyor bazı html eklenmiş olmalıdır. Div # product-options-wrapper tamamen boş.
Sander Mangel

0

Şimdiye kadar sadece burada verilen kabul edilen cevabı alabildim. Bir şeylerin bir Twitter Bootstrap moduyla çalışmasını sağlamak için, yapılandırılabilir ürünü yüklemek ve döndürülen sayfada komut dosyalarını çalıştıracak şekilde Prototip kullanmam gerekiyordu:

new Ajax.Updater(target, product, {
    parameters: { evalJS: true},
    ...

Ayrıca, modalımı kapattığımda içeriği tamamen temizlemem gerekiyordu:

$(document.body).on('hidden.bs.modal', function () {

    delete spConfig;
    $('#myModal').html('<div class="modal-dialog">...</div>');
    ...

Burada tam bir çözüm sunmadım, şimdi neler olduğunu bulduğum için, denetleyicimi yeniden düzenlemem ve ürünlerim için şablonu tamamlamam gerekiyor, böylece Twitter Bootstrap Modal ile çalışmak için düzgün bir başlık vb. Bununla birlikte, aşağıdaki tavsiyeyle, içeriğinizin doğru çalışması için ürününüzü yüklemek ve beraberinde gelen javascript'i çalıştırmak kolay olmalıdır. Kategori sayfanıza product.js vb. Eklemenize gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.