Kategorie zamiast produkt?w

Miejsce na wszelkie dyskusje odnośnie problemów technicznych i ewentualnych pytań z rozbudowaniem systemu w plikach i skryptach Opencart, a które nie dotyczą instalacji.

Kategorie zamiast produktów

Postprzez tommyk7 » 20 sie 2013, o 16:47

Witam
Domyślnie w OC jest tak że po wejściu w kategorię przechodzimy do listy produktów w danej kategorii.
Ja chciałbym to zmienić, tzn, chciałbym aby po wejściu w daną kategorię wyświetliła mi się lista kategorii drugiego poziomu wraz z miniaturami, a dopiero po wejściu w tą lista produktów w nie zawarta.
Macie jakieś pomysły ??
http://www.cermarket.pl
Ci?gle to ogarniam ;-)
tommyk7
 
Posty: 58
Dołączył(a): 2 sie 2013, o 15:17

Re: Kategorie zamiast produktów

Postprzez schematx.pl » 20 sie 2013, o 19:46

tu jest taki fajny vqmod http://forum.opencart.com/download/file.php?id=5948 który wyświetla miniatury w subkategoriach tak to nie to, ale może posłużyć do zmodyfikowania plików menu i dodania do nich miniatur.
schematx.pl
 
Posty: 300
Dołączył(a): 21 sty 2013, o 20:11

Re: Kategorie zamiast produktów

Postprzez tommyk7 » 20 sie 2013, o 20:14

Zainstalowałem moduł i w moim szablonie nie wnosi kompletnie żadnych zmian dodatkowo w Error Log otrzymuję:

Kod: Zaznacz cały
id        : Display Subcat Images
   version   : 1.0
   vqmver    : 1.1.0
   author    : Rob Horsfield
SEARCH NOT FOUND (ABORTING MOD): $product_total = $this->model_catalog_product->getTotalProducts(array('filter_category_id' => $result['category_id']));
http://www.cermarket.pl
Ci?gle to ogarniam ;-)
tommyk7
 
Posty: 58
Dołączył(a): 2 sie 2013, o 15:17

Re: Kategorie zamiast produktów

Postprzez schematx.pl » 21 sie 2013, o 08:52

nie mówiłem o instalacji tego dodatku a o użyciu jego kodu do stworzenia interesującego Cie rozwiązania - usuń plik dodatku z folderu XML, wyczyść zawartość folderu cache.

- dla wielowarstwowego menu możesz wykorzystać moduł UnlimitedMenu
UnlimitLevelMenu.zip

mamy zatem wielowarstwowe menu, co dalej?

w pliku kontrolera wielowarstwowego menu /controller/module/category.php szukamy kodu:
$product_total = $this->model_catalog_product->getTotalProducts($data);
i zastępujemy go:
if ($this->config->get('config_product_count')) {
$product_total = $this->model_catalog_product->getTotalProducts($data);
$image = $this->model_tool_image->resize($result['image'], 60, 60);
$this->data['categories'][] = array(
'name' => $result['name'] . ' (' . $product_total . ')',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $image
);
} else {
$image = $this->model_tool_image->resize($result['image'], 60, 60);
$this->data['categories'][] = array(
'name' => $result['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $image
);
}

dodaliśmy do kontrolera funkcję odpowiedzialna za generowanie miniatur kategorii, teraz zmodyfikujmy jeszcze plik /catalog/view/theme/SZABLON/template/module/category.tpl, jest tu niewiele linijek:
<?php if ($category['category_id'] == $category_id) { ?>
<a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
<?php } else { ?>
<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php } ?>

można zastąpić:
<?php if ($category['category_id'] == $category_id) { ?>
<a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?><?php if ($category['thumb']) { ?><img src="<?php echo $category['thumb']; ?>" /><?php } ?></a>
<?php } else { ?>
<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?><?php if ($category['thumb']) { ?><img src="<?php echo $category['thumb']; ?>" /><?php } ?></a>
<?php } ?>


rozwiązanie nie sprawdzone, pisane na żywca więc może zawierać błędy - pamiętaj o kopii zapasowej oryginalnych plików żeby je przywrócić jeśli coś pójdzie nie tak.

ewentualnie:
http://www.opencart.com/index.php?route ... n_id=10229
schematx.pl
 
Posty: 300
Dołączył(a): 21 sty 2013, o 20:11

Re: Kategorie zamiast produktów

Postprzez tommyk7 » 21 sie 2013, o 16:28

Dodatek usunięty, cache wyczyszczony.
Wielowarstwowe menu już mam ale po modyfikacji wyskakuje ogromna ilość błędów na stronie odnoszących się do pliku category.tpl w linii 12
Kod: Zaznacz cały
iv class="box boss_category">
  <div class="box-heading"><span><?php echo $heading_title; ?></span></div>
  <div class="box-content">
    <ul class="box-category">
      <?php foreach ($categories as $category) { ?>
      <li>
   <?php if ($category['category_id'] == $category_id) { ?>
<a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?><?php if ($category['thumb']) { ?><img src="<?php echo $category['thumb']; ?>" /><?php } ?></a>
<?php } else { ?>
<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?><?php if ($category['thumb']) { ?><img src="<?php echo $category['thumb']; ?>" /><?php } ?></a>
<?php } ?>
        <?php if ($category['children']) { ?>
        <ul>
          <?php foreach ($category['children'] as $child) { ?>
          <li>
            <?php if ($child['category_id'] == $child_id) { ?>
            <a href="<?php echo $child['href']; ?>" class="active"><?php echo $child['name']; ?></a>
            <?php } else { ?>
            <a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a>
            <?php } ?>
          </li>
          <?php } ?>
        </ul>
        <?php } ?>
      </li>
      <?php } ?>
    </ul>
  </div>
</div>


i category.php w liniach 58,59,64
Kod: Zaznacz cały
<?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;
      }
                     
      $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
            );

            if ($this->config->get('config_product_count')) {
$product_total = $this->model_catalog_product->getTotalProducts($data);
$image = $this->model_tool_image->resize($result['image'], 60, 60);
$this->data['categories'][] = array(
'name' => $result['name'] . ' (' . $product_total . ')',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $image
);
} else {
$image = $this->model_tool_image->resize($result['image'], 60, 60);
$this->data['categories'][] = array(
'name' => $result['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $image
);
}

            $total += $product_total;

            $children_data[] = array(
               'category_id' => $child['category_id'],
               'name'        => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
               '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'])
         );   
      }
      
      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();
     }
}
?>


Kopie oczywiście mam ale może to jakaś literówka i jeszcze nie wszystko stracone.
Jeśli chodzi o moduł UnlimitedMenu to po instalacji wariują pliki szablonu więc... też nie działa.
http://www.cermarket.pl
Ci?gle to ogarniam ;-)
tommyk7
 
Posty: 58
Dołączył(a): 2 sie 2013, o 15:17

Re: Kategorie zamiast produktów

Postprzez tommyk7 » 23 sie 2013, o 10:21

Panowie
Czy tylko jedna osoba na forum zna jakiekolwiek rozwiązanie ??
http://www.cermarket.pl
Ci?gle to ogarniam ;-)
tommyk7
 
Posty: 58
Dołączył(a): 2 sie 2013, o 15:17


Powrót do Pomoc techniczna przy Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 18 gości

cron