Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Outoa käyttäytymistä verkkokaupan kanssa

pistemies [23.05.2018 21:00:26]

#

Otsikon kanssa ehkä hiukan ongelmia.
Liittyy tekeillä olevaan laajennukseen Opencart versioon 1.5.6.4. Tällä laajennuksella voi lisätä jollekkin tuotteelle ns. ala-tuotteita eli lisätä "tuotepaketin", jossa yksi myynnissä oleva tuote sisältää useamman eri tuotteen.
Ongelma on admin sivulla, jossa tilauset eli orders sivulla voi lisätä suoraan tuotteen jollekkin haluamalleen asiakkaalle.
Tässä välissä koodi:

if (ui.item['sub_product_data'] != '') {
     sub = '';
     for (i = 0; i < ui.item['sub_product_data'].length; i++) {
            sub_product = ui.item.sub_product_data[i];
            sub += '<div id="sub-products-' + i + '" style="border:solid #e3e3e3;border-bottom-width:1px;padding-bottom:6px;">';
            sub += '<input type="hidden" name="multi_product[' + i + '][product][' + ui.item['value'] + ']" value="' + sub_product['product_id'] + '"/>';
            sub += sub_product["name"] + ', ' + sub_product["model"] + ', price ' + sub_product["price"];
            // Sub product options
            if(sub_product['option'] !=''){
                   sub += '<br><b><?php echo $text_sub_product_option;?></b>';
                     for(j = 0; j < sub_product['option'].length; j++){
                             sub_product_option = sub_product['option'][j];

                             // Select
                               if (sub_product_option['type'] == 'select') {
                                      sub += '<div id="sub-product-option-' + sub_product_option['product_option_id'] + '">';

                                     if (sub_product_option['required']) {
                                         sub += '<span class="required">*</span> ';
                                     }

                                     sub += sub_product_option['name'] + '<br />';
                                     sub += '<select name="multi_product[' + i + '][option][' + sub_product_option['product_option_id'] + ']">';
                                     sub += '<option value=""><?php echo $text_select; ?></option>';

                                     for (k = 0; k < sub_product_option['product_option_value'].length; k++) {
                                           sub_product_option_value = sub_product_option['product_option_value'][k];
                                           sub += '<option value="' + sub_product_option_value['product_option_value_id'] + '">' + sub_product_option_value['name'];

                                           if (sub_product_option_value['price'] && sub_product_option_value['price']  > 0) {
                                               sub += ' (' + sub_product_option_value['price_prefix'] + sub_product_option_value['price'] + ')';
                                           }
                                           sub += '</option>';
                                     }
                                    sub += '</select>';
                                    sub += '</div>';
                               }
                     }
             }
       sub += '</div>';
     }
 }
     $('#sub-products').html('<td class="left"><?php echo $entry_sub_products; ?></td><td class="left">' + sub + '</td>');

Mainittu arrayn indeksi 'sub_product_data' löytyy, lyhyt esimerkki:

[0] => Array
        (
            [quantity] => 989
            [sub_product_data] => Array
                (
                    [0] => Array
                        (
                            [product_id] => 31
                            [name] => Nikon D300
                            [price] => 50.0000
                            [model] => Product 4
                            [image] => data/demo/nikon_d300_1.jpg
                            [option] => Array
                                (
                                )

                            [deduct] => 1
                        )

                    [1] => Array
                        (
                            [product_id] => 46
                            [name] => Sony VAIO
                      // ... etc.

Ainoastaan ensimmäinen lisäämäni tämänkaltainen tuote löytyy. Ihmettelen sitä, miksi kaikki tuotteet, joissa tuo index 'sub_product_data' löytyy, ei toimi eli admin > orders > insert ei tunnisteta tuota hommaa. Lisää siis pelkästään 'päätuotteen' mutta ei noita alatuotteita.

Lisäys: Ps. Tuli mieleen, että tuossa yhdessä tuotteessa, joka toimii, on valintaloota. Pitää tarkistaa, voisiko tuo minun skripti olla osunut jonkin silmukan sisälle, joka käydään läpi, kun tarkastetaan tuotteen 'option data'.

The Alchemist [24.05.2018 23:07:55]

#

Kannattaisi kirjoittaa tuo sotku uudestaan jQueryä käyttäen, niin debuggaaminenkin helpottuisi. Jostain syystä sulla on yli 40 riviä koodia ja käytät jQueryä ainoastaan lopputuloksen oksentamiseen sivulle. Sisennyskin näyttää vaihtelevan 2-13 välilyönnin väliltä ja löytyypä sieltä esoteerisiä tyylejäkin kuten 7 ja 9 merkkiä...

pistemies [25.05.2018 16:12:18]

#

The Alchemist kirjoitti:

(24.05.2018 23:07:55): Kannattaisi kirjoittaa tuo sotku uudestaan...

Kiitos palautteesta ;)
Koodiin olen soveltanut Opencartin omaa tyyliä, hiukan muuttanut sen muuttujanimiä ja sitä, mitä tarttee tulostaa. En ole viitsinyt ruveta värkkäämmään ihan "omaa tyyliä".
Vika oli muuten tosiaan tuossa silmukka-rakenteessa, pieni mutta toimivuuden kannalta suuri bugi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta