Page 2 of 4

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Nov 19, 2011 6:39 pm
by sashun
hi, romeo2k


how did you made it

maincat
- subcat1
- - subsubcat1
- - - subsubsubcat1

plz. help me!!!!

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Nov 19, 2011 6:48 pm
by romeo2k
i find one menu on forums, and it is great :)

http://forum.opencart.com/viewtopic.php ... u&start=20

just modifying colors now, its easy :D

regards

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Nov 22, 2011 6:22 pm
by sashun
hello everybody

I have a problem. I need your help. Can you help me.

i need to add one more level.

I need to add one more level (4th level) sub-category.
Category
-child
--sister
----brother

PLZ help me!

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Nov 22, 2011 8:17 pm
by fred123
Hi I am using version 1.5.1.3 and want to add a sister level, will the above work? I kind of need it in simple terms !

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Nov 26, 2011 4:14 am
by Xciso
Use the guide in the link above.
Works like a dream with 1.5.1.3 :D

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Nov 29, 2011 3:53 am
by fred123
I would if I could read it!

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Nov 29, 2011 4:13 am
by fred123
I am sooo confused!

I have changed the files as per instructions and now have an error..

Parse error: syntax error, unexpected $end in /var/www/vhosts/xxxxxx.co.uk/httpdocs/catalog/controller/module/category.php on line 109

can someone please put all this into a simple instruction guide for an old dummie like me please.

Many thanks.
chokoret wrote:FIGURED OUT!!!!!! LET ME CLEAN THIS UP FOR THOSE WHO NEED THIS!! :^D
THANKX A MILLION ROGER!!

1. Open catalog/controller/module/category.php to edit , and find this part

Code: Select all

 if (isset($parts[1])) {
$this->data['child_id'] = $parts[1];
} else {
$this->data['child_id'] = 0;
}
2. and after , ADD this

Code: Select all

if (isset($parts[2])) {
$this->data['sisters_id'] = $parts[2];
} else {
$this->data['sisters_id'] = 0;
}



3. Find this part

Code: Select all

foreach ($categories as $category) {
$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
); 

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

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

$data = array(
'filter_category_id' => $category['category_id'],
'filter_sub_category' => true 
); 

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

$this->data['categories'][] = array(
'category_id' => $category['category_id'],
'name' => $category['name'] . ' (' . $product_total . ')',
'children' => $children_data,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
);
}
(this is below $categories = $this->model_catalog_category->getCategories(0);
and above if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) { )

4. and REPLACE that with this ::

Code: Select all

foreach ($categories as $category) {

$children_data = array();

$children = $this->model_catalog_category->getCategories($category['category_id']);

foreach ($children as $child) { 
$sister_data = array();
$sisters = $this->model_catalog_category->getCategories($child['category_id']);
if(count($sisters) > 1) {
foreach ($sisters as $sisterMember) {
$sister_data[] = array(
'category_id' =>$sisterMember['category_id'],
'name' => $sisterMember['name'],
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $sisterMember['category_id']) 
); 

}
$children_data[] = array(
'category_id' => $child['category_id'],
'sister_id' => $sister_data,
'name' => $child['name'],
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) 
); 
}else{ 
$children_data[] = array(
'category_id' => $child['category_id'],
'sister_id' =>'',
'name' => $child['name'],
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) 
); 
}
} 
$data = array(
'filter_category_id' => $category['category_id'],
'filter_sub_category' => true 
); 

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

$this->data['categories'][] = array(
'category_id' => $category['category_id'],
'name' => $category['name'],
'children' => $children_data,
'sister' => $sister_data,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
);
}

5. Now save. and open cataloge/view/theme/*yourtheme*/template/module/category.tpl , FIND

Code: Select all

 <?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 } ?>
6. and under that, ADD

Code: Select all

<?php if($child['sister_id']){ ?>
<ul>
<?php foreach($child['sister_id'] as $sisters) { ?>

<li>
<?php if ($sisters['category_id'] == $sisters_id) { ?> 
<a href="<?php echo $sisters['href']; ?>" class="active"> - <?php echo $sisters['name']; ?></a>
<?php } else { ?>
<a href="<?php echo $sisters['href']; ?>"> - <?php echo $sisters['name']; ?></a>
<?php } ?>
</li>
<?php } ?>
</ul>
<?php } ?>

7. Now save, and go open catalog/view/theme/*yourtheme/stylesheet/stylesheet.css
FIND

Code: Select all

.box-category > ul > li ul > li > a.active + ul {
display: block;
}
8. and under that, ADD

Code: Select all

.box-category > ul > li ul > li ul > li a.active {
font-weight: bold;
color: #06bcc3;
}
.box-category > ul > li ul > li ul > li a.active + ul {
display: block;
}
( #06bcc3 is color code, you might want to change it to the color you want)

8. Now Save, and test the view! :^D !!

Re: [SOLVED][1.5] one more level of sub category!

Posted: Wed Nov 30, 2011 3:38 am
by Xciso
fred123 wrote:I would if I could read it!
Why cant you read it?

Re: [SOLVED][1.5] one more level of sub category!

Posted: Fri Dec 02, 2011 11:55 pm
by The Alchemist
Xciso wrote:
fred123 wrote:I would if I could read it!
Why cant you read it?
Its in spanish, and I am having a similar issue with the install. I can upload the mod, but I dont know how to use it properly.

The file didnt overwrite anything

Re: [SOLVED][1.5] one more level of sub category!

Posted: Mon Dec 05, 2011 9:35 pm
by fred123
its in spanish so cant read it...

REALLY need to get this sorted asap...

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Dec 06, 2011 3:44 am
by fred123
The Alchemist wrote:
Xciso wrote:
fred123 wrote:I would if I could read it!
Why cant you read it?
Its in spanish, and I am having a similar issue with the install. I can upload the mod, but I dont know how to use it properly.

The file didnt overwrite anything
Have you got any further with it?

Re: [SOLVED][1.5] one more level of sub category!

Posted: Fri Dec 09, 2011 12:04 am
by The Alchemist
Yes I got it to work.

Its very nice, but I still have the categories displayed in the header bar, which is where I wanted them to create the drop downs. But this is good enough for now.

Re: [SOLVED][1.5] one more level of sub category!

Posted: Wed Dec 14, 2011 6:04 pm
by fred123
I cant figure it out, can you point me in the right direction?

Re: [SOLVED][1.5] one more level of sub category!

Posted: Fri Dec 16, 2011 5:13 pm
by fred123
The Alchemist wrote:Yes I got it to work.

Its very nice, but I still have the categories displayed in the header bar, which is where I wanted them to create the drop downs. But this is good enough for now.
Are you usin the module?

Re: [SOLVED][1.5] one more level of sub category!

Posted: Wed Dec 28, 2011 4:23 am
by jty
wend wrote:I may write some jquery code, Change the css style of sub-categories.

Add these code to the end of Your_Template/template/header.tpl

Code: Select all

<script type="text/javascript">
	$(document).ready(function(){
		$('.box-category ul li ul').css("display","block");
		//$('.box-category ul li ul li ul').css("display","block"); //this may display sub sub categories.

	});
</script>
Thank-you. This works for the 1st sub category level in 1.5.1.3 but the sub sub categories, the second level, didn't work for me.

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Feb 04, 2012 3:17 am
by avriukas
DAMN... it is required simple thing -
dir
sub dir
sub sub dir

and not working on opencart.. 1.5.1.3

I'm so so sad...

too many code chahnges and after problems in previouse posts to try make all these changes :( :(

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Feb 25, 2012 1:05 am
by Voomer
Hi!

any ideas why are the special characters ($,euro and other language characters) messed up?

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sat Feb 25, 2012 1:11 am
by Voomer
got it! FIXED!

Re: [SOLVED][1.5] one more level of sub category!

Posted: Tue Feb 28, 2012 9:54 pm
by perfectshoppe
I have been able to show sub categories under categories following step no 1 to step 8 mentioned above but my problem is that it is not now showing the number of products on left hand side either in category or in sub categories. Any help?

Also by pressing main category link , a refine search page gets opened with only sub categories mentioned there which look very odd. Please solve the problem.

Re: [SOLVED][1.5] one more level of sub category!

Posted: Sun Mar 11, 2012 1:58 am
by pxdva
Credit to the original poster chokoret for this post.

For 1.5.1.3 use the following:

STEP 1 Use this for catalog/controller/module/category.php:

Code: Select all

<?php 
class ControllerModuleCategory extends Controller {
   protected function index() {
      $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['sisters_id'] = $parts[2];
      } else {
         $this->data['sisters_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) {
         
             $children_data = array();
          $sister_data = array();
             
             $children = $this->model_catalog_category->getCategories($category['category_id']);
             
             foreach ($children as $child) {           
                $sister_data = array();
                $sisters = $this->model_catalog_category->getCategories($child['category_id']);
                if($sisters) {
                   foreach ($sisters as $sisterMember) {
                      $sister_data[] = array(
                         'category_id' =>$sisterMember['category_id'],
                         'name'        => $sisterMember['name'],
                         'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $sisterMember['category_id'])   
                      );                     
                                 
                   }
                   $children_data[] = array(
                         'category_id' => $child['category_id'],
                         'sister_id'   => $sister_data,
                         'name'        => $child['name'],
                         'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])   
                      );   
                }else{                     
                   $children_data[] = array(
                      'category_id' => $child['category_id'],
                      'sister_id'    =>'',
                      'name'        => $child['name'],
                      'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])   
                   );   
                }
             }         
             $data = array(
                'filter_category_id'  => $category['category_id'],
                'filter_sub_category' => true   
             );     
               
             $product_total = $this->model_catalog_product->getTotalProducts($data);
                     
             $this->data['categories'][] = array(
                'category_id' => $category['category_id'],
                'name'        => $category['name'],
                'children'    => $children_data,
                'sister'    => $sister_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();
     }
}
?>
STEP 2: Use this for catalog/view/theme/default/template/module/category.tpl:

Code: Select all

<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
    <div class="box-category">
      <ul>
        <?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']; ?></a>
          <?php } else { ?>
          <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></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 } ?>
                  <?php if($child['sister_id']){ ?>
    <ul>
    <?php foreach($child['sister_id'] as $sisters) { ?>

    <li>
    <?php if ($sisters['category_id'] == $sisters_id) { ?>
    <a href="<?php echo $sisters['href']; ?>" class="active"> - <?php echo $sisters['name']; ?></a>
    <?php } else { ?>
    <a href="<?php echo $sisters['href']; ?>"> - <?php echo $sisters['name']; ?></a>
    <?php } ?>
    </li>
    <?php } ?>
    </ul>
    <?php } ?>
           </li>
            <?php } ?>
          </ul>
          <?php } ?>
        </li>
        <?php } ?>
      </ul>
    </div>
  </div>
</div>
STEP 3:
FIND in catalog/view/theme/default/stylesheet/stylesheet.css

Code: Select all

.box-category > ul > li ul > li > a.active + ul {
display: block;
}
and UNDER THAT, ADD:

Code: Select all

.box-category > ul > li ul > li ul > li a.active {
font-weight: bold;
color: #06bcc3;
}
.box-category > ul > li ul > li ul > li a.active + ul {
display: block;
}
That worked for me using the default Opencart template.