Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Как вывести товары для подкатегорий на страниэто категорий?


 Share

Recommended Posts

Прошу специалистов форума подсказать!

На страниэто категории расположены блоки с подкатегориями и в каждой - свои товары. Вот как тут

Вывести их не получается. Товары на этот страниэто  выводятся если назналить им главную категорию (что, наверное, естественно - страница то относится к главной категории). Но располагаются просто в порядке сортировки, без какой-липотому что привязки к подкатегории. Как это победить?

Буду очень благодарен..

Link to comment
Share on other sites


Для вывода товаров из подкатегории в родительской категории используются настройки как на скрине. Главная категория - ведра, показывать и в главной и в родительской. Но никакой разбивки по подкатегориям на страниэто главной категории  не бугдет. Это уже допиливать нужно.

Screenshot_3.jpg.77b01a433a17f7bf1a493dbfdebe1227.jpg

Link to comment
Share on other sites


8 минут назад, Amigo161 сказал:

Это уже допиливать нужно.

Это я уже понял. Теоретически даже понимаю как: Спрашиваем в базе id подкатегории и выводим заданное когдачество товаров в нужном блоке для этот страницы по этому id. Но код могу написать только в проэтодурном стиле.  А уложить это в MVCL для OpenCart - квалификации не хваиет. Может уже кто-то решал подобную задачу? И есть уже готовый код?

Link to comment
Share on other sites


2 часа назад, anboza сказал:

подробнее: что гделали

код category.tpl:

<?php if (count($categories) != 0) { ?>
<ul class="catalog-collection__list">
                <?php foreach ($categories as $category) { ?>
                <div class="collection__item--wrapper">

                    <li class="catalog-collection__item collection__item--new-age">
                        <h2 class="catalog-collection__title"><?php echo $category['name']; ?></h2>

                        <div class="catalog-collection__specifications">
                          <!-- html код -->
                          <?php foreach ($products as $product) { ?>
                          <li class="collection__item--preview collection__item--fon-ambient">
                            <a class="collection__link--preview" href="<?php echo $product['href']; ?>">
                           <h3 class="collection__title--preview"><?php echo $product['name']; ?></h3>
                            </a>
                        </li>
                        <?php } ?>
                    </ul>
                </div>
                <?php } ?>
  <!-- html код -->
  <?php } else { ?>
    <!-- вывод товара в конечную категорию -->
  <?php foreach ($products as $product) { ?>

            <li class="collection__item">
                <a class="collection__link" href="<?php echo $product['href']; ?>">
                    <div class="collection__item--img-wrapper">
                      <h2 class="collection__title">
                            <?php echo $product['name']; ?></h2>
                    </div>
                </a>
                <p class="collection__price"><span class="collection__color"><?=$product['price']; ?></span> руб. за м2</p>

                <div class="link-button__wrapper">
                    <button class="link-button button__collection--item">
                        <a href="<?php  $product['href']; ?>">купить</a>
                    </button>
                </div>
            </li>
            <?php } ?>
        </ul>
 <!-- end вывод товара в конечную категорию -->
    <?php } ?>

Как уже писал - товары в подкатегории не выводятся. Товары в принципе появляются, когда указывается, что они относятся к главной категории. 

Link to comment
Share on other sites


В 13.06.2019 в 09:50, Amigo161 сказал:

Это уже допиливать нужно.

Похоже допилил. Может кому пригодится.

 

В контроллер по адресу \catalog\controller\product\category.php  в первый foreach ($results as $result) после кода

if($product_total)
				{
					$filter_data = array(
						'filter_category_id' => $result['category_id'],
						'filter_filter'      => $filter,
						'sort'               => $sort,
						'order'              => $order
					);	

всивляем уже наш код 

$product_results = $this->model_catalog_product->getProducts($filter_data);   //добавлен код для дочерних катеорий
					foreach ($product_results as $product) {
						
						$products[] = array(
							'product_id'  => $product['product_id'],
							'name'        => $product['name'],
							'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $product['product_id'] . $url)
						);
					}
				}
				
				$data['categories'][] = array(
					'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
					'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
					'children' => $products
				);  

ну и в category.tpl пишем нужный код (html код условный)

<?php if (count($categories) !== 0) { ?>
<ul class="catalog-collection__list">
<?php foreach ($categories as $category) { ?>
 <li class="catalog-collection__item">
<h2 class="catalog-collection__title"><?php echo $category['name']; ?></h2>
 </li>
    <ul class="collection__list--preview">
                       <!--А вот тут выводим уже товары для своей категории-->
                        <?php foreach ($category['children'] as $child) { ?>
                        
                 
                        <li class="collection__item--preview">
                            <a class="collection__link--preview" href="<?php echo $child['href']; ?>">

                                <h3 class="collection__title--preview"><?php echo $child['name']; ?></h3>
                            </a>
                        </li>
                        <?php } ?>
                 </ul>               
                <?php } ?>

       </ul>
<?php } else { ?>
<!-- Тут выводится последняя категория-->
<ul class="collection__list">
  <?php foreach ($products as $product) { ?>

            <li class="collection__item">
                <a class="collection__link" href="<?php echo $product['href']; ?>">
                  <h2 class="collection__title">
                            <?php echo $product['name']; ?></h2>
                  </li>
            <?php } ?>
        </ul>
<?php } ?>

За качество кода не обессудьте. Но у меня рилииет.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.