A
A
alalala2020-05-17 07:24:24
PHP
alalala, 2020-05-17 07:24:24

Opencart categories on homepage?

Help fix the module The default module of
opencart "categories" displays only the 1st level of categories, if you
go to the category of the 1st level, then it opens the 2nd level .

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <?php if ($category['category_id'] == $category_id) { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
  <?php if ($category['children']) { ?>
  <?php foreach ($category['children'] as $child) { ?>
  <?php if ($child['category_id'] == $child_id) { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
  <?php } else { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } else { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
  <?php } ?>
  <?php } ?>
</div>


controller
<?php
class ControllerExtensionModuleCategory extends Controller {
  public function index() {
    $this->load->language('extension/module/category');

    $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])) {
      $data['category_id'] = $parts[0];
    } else {
      $data['category_id'] = 0;
    }

    if (isset($parts[1])) {
      $data['child_id'] = $parts[1];
    } else {
      $data['child_id'] = 0;
    }

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

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

    $data['categories'] = array();

    $categories = $this->model_catalog_category->getCategories(0);

    foreach ($categories as $category) {
      $children_data = array();

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

        foreach($children as $child) {
          $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true);

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

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

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

    return $this->load->view('extension/module/category', $data);
  }
}

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question