php - Adding product options to related product in OpenCart 2.3.0.2 -


the idea simple; want make easier customers add related products while they're visiting single product. related products have required options options need showed too.

i think close on showing part, no idea how add cart ajax calls etc. please note i'm not programmer, fiddle php code know bit.

i started editing in controller; catalog/controller/product/product.php

            $data['products'] = array();                  $results = $this->model_catalog_product->getproductrelated($this->request->get['product_id']);          //adding array needs filled product options         $data['daaf_options'] = array();          foreach ($results $result) {              if ($result['image']) {                 $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height'));             } else {                 $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height'));             }              if ($this->customer->islogged() || !$this->config->get('config_customer_price')) {                 $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);             } else {                 $price = false;             }              if ((float)$result['special']) {                 $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);             } else {                 $special = false;             }              if ($this->config->get('config_tax')) {                 $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);             } else {                 $tax = false;             }              if ($this->config->get('config_review_status')) {                 $rating = (int)$result['rating'];             } else {                 $rating = false;             }              $data['products'][] = array(                 'product_id'  => $result['product_id'],                 'thumb'       => $image,                 'name'        => $result['name'],                 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ent_quotes, 'utf-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',                 'price'       => $price,                 'special'     => $special,                 'tax'         => $tax,                 'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,                 'rating'      => $rating,                 'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])             );               //getting options              $daaf_getoptions = $this->model_catalog_product->getproductoptions($result['product_id']);              $related_product_option_value_data = array();                 foreach ($daaf_getoptions $related_option) {                  foreach ($related_option['product_option_value'] $related_option_value) {                          $related_product_option_value_data[] = array(                             'product_option_value_id' => $related_option_value['product_option_value_id'],                             'option_value_id'         => $related_option_value['option_value_id'],                             'name'                    => $related_option_value['name']                         );                  }                  $data['daaf_options'][] = array(                     'product_option_id'    => $related_option['product_option_id'],                     'product_option_value' => $related_product_option_value_data,                     'option_id'            => $related_option['option_id'],                     'name'                 => $related_option['name'],                     'type'                 => $related_option['type'],                     'value'                => $related_option['value'],                     'required'             => $related_option['required']                 );                }         } 

then add options related products in /catalog/view/theme/default/template/product/product.tpl

          $product_options_center = $modules_old_opencart->getmodules('product_options_center');       if( count($product_options_center) ) {          foreach ($product_options_center $module) {             echo $module;         }       } ?>          <?php if ($daaf_options) { ?>       <div class="options">         <?php foreach ($daaf_options $related_option) { ?>         <?php if ($related_option['type'] == 'select') { ?>         <div class="form-group<?php echo ($related_option['required'] ? ' required' : ''); ?>">           <label class="control-label" for="input-option<?php echo $related_option['product_option_id']; ?>"><?php echo $related_option['name']; ?></label>           <select name="option[<?php echo $related_option['product_option_id']; ?>]" id="input-option<?php echo $related_option['product_option_id']; ?>" class="form-control">             <option value=""><?php echo $text_select; ?></option>             <?php foreach ($related_option['product_option_value'] $related_option_value) { ?>             <option value="<?php echo $related_option_value['product_option_value_id']; ?>"><?php echo $related_option_value['name']; ?>             </option>             <?php } ?>           </select>         </div>         <?php } ?>          <?php } ?>       </div>       <?php } ?> 

this looks now; http://imgur.com/a/rds3v

the product in example has 7 related products , have 1 required option. it's going wrong because every related product getting options 7 related products.

what doing wrong?

sincerely hope can out! cheers, david

try move //getting options codes above $data['products'][] = array can put inside product array.

            $data['products'] = array();              $results = $this->model_catalog_product->getproductrelated($this->request->get['product_id']);      foreach ($results $result) {          if ($result['image']) {             $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height'));         } else {             $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_related_width'), $this->config->get($this->config->get('config_theme') . '_image_related_height'));         }          if ($this->customer->islogged() || !$this->config->get('config_customer_price')) {             $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);         } else {             $price = false;         }          if ((float)$result['special']) {             $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);         } else {             $special = false;         }          if ($this->config->get('config_tax')) {             $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);         } else {             $tax = false;         }          if ($this->config->get('config_review_status')) {             $rating = (int)$result['rating'];         } else {             $rating = false;         }          //adding array needs filled product options         $daaf_options = array();          //getting options          $daaf_getoptions = $this->model_catalog_product->getproductoptions($result['product_id']);          $related_product_option_value_data = array();             foreach ($daaf_getoptions $related_option) {              foreach ($related_option['product_option_value'] $related_option_value) {                      $related_product_option_value_data[] = array(                         'product_option_value_id' => $related_option_value['product_option_value_id'],                         'option_value_id'         => $related_option_value['option_value_id'],                         'name'                    => $related_option_value['name']                     );              }              $daaf_options[] = array(                 'product_option_id'    => $related_option['product_option_id'],                 'product_option_value' => $related_product_option_value_data,                 'option_id'            => $related_option['option_id'],                 'name'                 => $related_option['name'],                 'type'                 => $related_option['type'],                 'value'                => $related_option['value'],                 'required'             => $related_option['required']             );            }          $data['products'][] = array(             'product_id'  => $result['product_id'],             'thumb'       => $image,             'name'        => $result['name'],             'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ent_quotes, 'utf-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',             'price'       => $price,             'special'     => $special,             'tax'         => $tax,             'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,             'rating'      => $rating,             'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id']),             'options'     => $daaf_options //we put options here         );     } 

then, can call product.tpl if ($product['options']) (inside foreach ($products $product) of course).


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -