Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывод товаров в меню категорий


Recommended Posts

Здравствуйте. Подскажите пожалуйста как реализовать, что бы товары выводились в меню? меню аккордеон 

в виде: (да знаю, что может тормозить. но товаров не очень много) 

 

Категория 1

товар 1

товар 2

Категория 2 

товар 1

товар 2

 

Понимаю, что нужно переписать генерацию меню в \controller\module\category.php

но как правильно это сделать.. уже весь мозг сломал. смог сделать только просто вывод товаров. 

Спойлер

Генерация вывода товаров для category.php

 

    $this->load->language('product/category');

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

    if ($results) {
      foreach ($results as $result) {

        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;
        }

        $data['products'][] = array(
          'product_id'  => $result['product_id'],         
          'name'        => $result['name'],
          'upc'         => $result['upc'],
          '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,
          'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])
        );
      }   
    }

 

Змінено користувачем Akatyi
Надіслати
Поділитися на інших сайтах


35 минут назад, Akatyi сказал:

нужно переписать генерацию меню в \controller\module\category.php

как-то так

foreach ($categories as $category) {
    // add products start
    $filter_data = array(
      'filter_category_id' => $category['category_id'],
    );

    $results = $this->model_catalog_product->getProducts($filter_data);
    $products_to_cat = array();
    if ($results) {
        foreach ($results as $p) {
            $products_to_cat[] = array(
              'name' => $p['name'],
              'href' => $this->url->link('product/product', 'product_id=' . $p['product_id'])
            );
        }
    }
    // add products end
    $children_data = array();

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

        foreach ($children as $child) {
            // add products start
            $filter_data = array(
              'filter_category_id' => $child['category_id'],
            );

            $results = $this->model_catalog_product->getProducts($filter_data);
            $products_to_cat_child = array();
            if ($results) {
                foreach ($results as $p) {
                    $products_to_cat_child[] = array(
                      'name' => $p['name'],
                      'href' => $this->url->link('product/product', 'product_id=' . $p['product_id'])
                    );
                }
            }
            // add products end
            $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true);

            $children_data[] = array(
              'products' => $products_to_cat_child,
              '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(
      // add products start
      'products' => $products_to_cat,
      // add products end
      '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'])
    );
}

 

  • +1 2
Надіслати
Поділитися на інших сайтах

Спасибо. а как это теперь всё дело вписать в меню? 

в данный момент получается нечто вроде такого

view\theme\default\template\extension\module\category.tpl

Спойлер

<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>

<table class="table">
  <thead>
    <tr>
      <th scope="col"></th>
      <th scope="col">Наименование работ</th>
      <th scope="col">Ед. изм.</th>
      <th scope="col">Цена, руб.</th>
      
    </tr>
  </thead>
<?php foreach ($products as $product) { ?>
  <tbody>
    <tr>
      <td></td>
      <td><h4><a href="<?php echo $product['href']; ?>"><?php echo $product['name'] ?></a></h4></td>      
      <td><?php echo $product['upc']; ?></td>
      <td><?php echo $product['price']; ?></td>

    </tr>
  </tbody>
<?php } ?>
</table>

 

 

а в \controller\module\category.php

 

Спойлер

<?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');




// ----------------------- Вывод товара в категориях -------------------------
    $this->load->language('product/category');

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

    if ($results) {
      foreach ($results as $result) {

        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;
        }

        $data['products'][] = array(
          'product_id'  => $result['product_id'],         
          'name'        => $result['name'],
          'upc'         => $result['upc'],
          '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,
          'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])
        );
      }   
    }
// ----------------------- Конец Вывода товаров в категориях -------------------

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

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

foreach ($categories as $category) {
    // add products start
    $filter_data = array(
      'filter_category_id' => $category['category_id'],
    );

    $results = $this->model_catalog_product->getProducts($filter_data);
    $products_to_cat = array();
    if ($results) {
        foreach ($results as $p) {
            $products_to_cat[] = array(
              'name' => $p['name'],
              'href' => $this->url->link('product/product', 'product_id=' . $p['product_id'])
            );
        }
    }
    // add products end
    $children_data = array();

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

        foreach ($children as $child) {
            // add products start
            $filter_data = array(
              'filter_category_id' => $child['category_id'],
            );

            $results = $this->model_catalog_product->getProducts($filter_data);
            $products_to_cat_child = array();
            if ($results) {
                foreach ($results as $p) {
                    $products_to_cat_child[] = array(
                      'name' => $p['name'],
                      'href' => $this->url->link('product/product', 'product_id=' . $p['product_id'])
                    );
                }
            }
            // add products end
            $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true);

            $children_data[] = array(
              'products' => $products_to_cat_child,
              '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(
      // add products start
      'products' => $products_to_cat,
      // add products end
      '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);
	}
}

 

 

Меню то работает... но так и осталось категория - подкатегория. 

пробовал некоторые переменные из кода который мне скинули, ругается на переменные...

Змінено користувачем Akatyi
Надіслати
Поділитися на інших сайтах


<div class="list-group">
    <?php foreach ($categories as $category) { ?>
        <?php if ($category['category_id'] == $category_id) { ?>
            <!-- add products start -->
            <?php foreach ($category['products'] as $p) { ?>
                <a href="<?php echo $p['href']; ?>"><?php echo $p['name']; ?></a><br/>
            <?php } ?>
            <!-- add products end -->
            <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>
                        <!-- add products start -->
                        <?php foreach ($child['products'] as $p) { ?>
                            <a href="<?php echo $p['href']; ?>"><?php echo $p['name']; ?></a><br/>
                        <?php } ?>
                        <!-- add products end -->
                    <?php } else { ?>
                        <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
                        <!-- add products start -->
                        <?php foreach ($child['products'] as $p) { ?>
                            <a href="<?php echo $p['href']; ?>"><?php echo $p['name']; ?></a><br/>
                        <?php } ?>
                        <!-- add products end -->
                    <?php } ?>
                <?php } ?>
            <?php } ?>
        <?php } else { ?>
            <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
            <!-- add products start -->
            <?php foreach ($category['products'] as $p) { ?>
                <a href="<?php echo $p['href']; ?>"><?php echo $p['name']; ?></a><br/>
            <?php } ?>
            <!-- add products end -->
        <?php } ?>
    <?php } ?>
</div>

 

  • +1 2
Надіслати
Поділитися на інших сайтах

@fanatic, Огромное спасибо! Очень помогли! Честно бился несколько дней над этим вопросом. даже не знаю смог бы сам дойти до решения... 

ещё раз Огромное спасибо.

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.