Товары в боковом меню.

Тема в разделе "OpenCart", создана пользователем kolich85, 31 окт 2015.

  1. kolich85

    kolich85

    Регистрация:
    19 сен 2013
    Сообщения:
    164
    Симпатии:
    93
  2. iga

    iga

    Регистрация:
    6 фев 2014
    Сообщения:
    285
    Симпатии:
    53
    Может с помощью модуля "меню категорий pro" попробовать? Но, боюсь придётся ещё код допиливать. Полностью он не справится.
     
  3. kolich85

    kolich85

    Регистрация:
    19 сен 2013
    Сообщения:
    164
    Симпатии:
    93
    УРА!!! сделал. Может кому то пригодиться. Это код файла /catalog/controller/module/category.php
    PHP:
    <?php
    class ControllerModuleCategory extends Controller {
    protected function 
    index($setting) {
            
    $this->language->load('module/category');
          
            
    $this->data['heading_title'] = $this->language->get('heading_title');
          
            if (isset(
    $this->request->get['path'])) {
                
    $parts explode('_', (string)$this->request->get['path']);
            } else {
                
    $parts = array();
            }
            if (isset(
    $parts[0])) {
                
    $this->data['category_id'] = $parts[0];
            } else {
                
    $this->data['category_id'] = 0;
            }
          
            if (isset(
    $parts[1])) {
                
    $this->data['child_id'] = $parts[1];
            } else {
                
    $this->data['child_id'] = 0;
            }
          
            if (isset(
    $parts[2])) {
                
    $this->data['child2_id'] = $parts[2];
            } else {
                
    $this->data['child2_id'] = 0;
            }
          
            if (isset(
    $parts[3])) {
                
    $this->data['child3_id'] = $parts[3];
            } else {
                
    $this->data['child3_id'] = 0;
            }
                              
            
    $this->load->model('catalog/category');

            
    $this->load->model('catalog/product');

            
    $this->data['categories'] = array();
          
            
    $categories $this->model_catalog_category->getCategories(0);  
            foreach (
    $categories as $category) {
                
    $total $this->model_catalog_product->getTotalProducts(array('filter_category_id'  => $category['category_id']));
                
    $children_data = array();
                
    $children $this->model_catalog_category->getCategories($category['category_id']);
                foreach (
    $children as $child) {
                    
    $data = array(
                        
    'filter_category_id'  => $child['category_id'],
                        
    'filter_sub_category' => true
                    
    );
                  
                  
                    
    //
                        
    $children_data_level2 = array();
                        
    $children_level2 $this->model_catalog_category->getCategories($child['category_id']);              
                        foreach (
    $children_level2 as $child_level2) {
                                
    $data_level2 = array(
                                        
    'filter_category_id'  => $child_level2['category_id'],
                                        
    'filter_sub_category' => true
                                
    );
                          
                          
                            
    $children_data_level3 = array();
                            
    $children_level3 $this->model_catalog_category->getCategories($child_level2['category_id']);              
                            foreach (
    $children_level3 as $child_level3) {
                                
    $data_level3 = array(
                                        
    'filter_category_id'  => $child_level3['category_id'],
                                        
    'filter_sub_category' => true
                                
    );

                                
    $children_data_level3[] = array(
                                        
    'category_id' => $child_level3['category_id'],
                                        
    'name'  =>  $child_level3['name'],
                                        
    'href'  => $this->url->link('product/category''path=' $category['category_id'] . '_' $child['category_id'] . '_' $child_level2['category_id'] . '_' $child_level3['category_id']),
                                        
    'id' => $category['category_id']. '_' $child['category_id']. '_' $child_level2['category_id'] . '_' $child_level3['category_id']
                                );
                        }
                          
                          
                                
    $children_data_level2[] = array(
                                        
    'category_id' => $child_level2['category_id'],
                                        
    'name'  =>  $child_level2['name'],
                                        
    'children3'    => $children_data_level3,
                                        
    'href'  => $this->url->link('product/category''path=' $category['category_id'] . '_' $child['category_id'] . '_' $child_level2['category_id']),
                                        
    'id' => $category['category_id']. '_' $child['category_id']. '_' $child_level2['category_id']
                                );
                        }
                        
    //

                    
    $product_total $this->model_catalog_product->getTotalProducts($data);

                    
    $total += $product_total;

                    
    $children_data[] = array(
                        
    'category_id' => $child['category_id'],
                        
    'name'        => $child['name'] . ($this->config->get('config_product_count') ? ' (' $product_total ')' ''),
                        
    'children2'    => $children_data_level2,
                        
    'href'        => $this->url->link('product/category''path=' $category['category_id'] . '_' $child['category_id'])  
                    );      
                }

                
    $this->data['categories'][] = array(
                    
    'category_id' => $category['category_id'],
                    
    'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' $total ')' ''),
                    
    'children'    => $children_data,              
                    
    'href'        => $this->url->link('product/category''path=' $category['category_id'])
                );  
            }
             
    $url '';
            
    $category_id 0;

         

            if (
    $category_id == && isset($this->request->get['path'])) {
                
    $url '&path=' $this->request->get['path'];

                
    $parts explode('_', (string)$this->request->get['path']);
                
    $category_id array_pop($parts);
            }

            if (isset(
    $this->request->get['product_id']) && $category_id == 0) {
                
    $results $this->model_catalog_product->getCategories($this->request->get['product_id']);

                if (
    count($results)) {
                    
    $url '&path=' $results[0]['category_id'];
                    
    $category_id $results[0]['category_id'];
                }
            }

            
    $this->data['products'] = array();

            
    $data = array(
                
    'filter_category_id'  => $category_id,
                
    'sort'  => 'p.sort_order',
                
    'order' => 'ASC',
                
    'start' => 0,
                
    'limit' => 100
            
    );

            
    $results $this->model_catalog_product->getProducts($data);

            foreach (
    $results as $result) {
                if (
    $result['image']) {
                    
    $image $this->model_tool_image->resize($result['image'], 140140);
                } else {
                    
    $image false;
                }
                          
                if ((
    $this->config->get('config_customer_price') && $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')));
                } 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')));
                } else {
                    
    $special false;
                }
              
                if (
    $this->config->get('config_review_status')) {
                    
    $rating $result['rating'];
                } else {
                    
    $rating false;
                }
              
                
    $this->data['products'][] = array(
                    
    'product_id' => $result['product_id'],
                    
    'thumb'        => $image,
                    
    'name'         => $result['name'],
                    
    'price'        => $price,
                    
    'special'      => $special,
                    
    'rating'     => $rating,
                    
    'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
                    
    'href'         => $this->url->link('product/product'$url '&product_id=' $result['product_id']),
                );
            }

          

            if (
    file_exists(DIR_TEMPLATE $this->config->get('config_template') . '/template/module/category.tpl')) {
                
    $this->template $this->config->get('config_template') . '/template/module/category.tpl';
            } else {
                
    $this->template 'default/template/module/category.tpl';
            }

            
    $this->render();
        }
    }
    ?>
    Вывод в default/template/module/category.tpl
    PHP:
     <?php foreach ($products as $product) { ?>
          <div class="category_table3" style="padding-left:10px;">  
      
          <center>  <?php if ($product['thumb']) { ?>
            <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
            <?php ?>
            <div style="width:140px; padding-left:6px;"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
              <div class="price" style="width:140px; padding-left:6px;">
                          <?php if (!$product['special']) { ?>
                    
                                  <span><?php echo $product['price']; ?></span>
                
                          <?php } else { ?>
                        
                                  <span><div class="price-old"><?php echo $product['price']; ?></div> <div class="price-new"><?php echo $product['special']; ?></div></span>
                              </div>
                          <?php ?>
                    </div>
         
            <div style="padding-left:26px;" class="cart"><a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button_oform"><span>Купить</span></a></div>
          </div>
          <?php ?> 
     
    Lasted edited by : 6 ноя 2015
    iga нравится это.
  4. iga

    iga

    Регистрация:
    6 фев 2014
    Сообщения:
    285
    Симпатии:
    53
    Вот только если файл будет обновляться, нужно будет не забывать каждый раз ручками всё прописывать заново. Хорошоб решить эту проблему, всё же, модулями.
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Файл не должен обновляться. В ОК любые обновления категорически противопоказаны. Даже, если какие-то правки оформлены в виде vQmod это совсем не гарантирует, что они не слетят после обновления.