Jump to content
MaxPsm

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites
9 часов назад, MaxPsm сказал:

Вывести их не получается.

подробнее: что делали, что не получилось

Share this post


Link to post
Share on other sites

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

Screenshot_3.jpg.77b01a433a17f7bf1a493dbfdebe1227.jpg

Share this post


Link to post
Share on other sites
8 минут назад, Amigo161 сказал:

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

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

Share this post


Link to post
Share on other sites

 

Share this post


Link to post
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 } ?>

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

Share this post


Link to post
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 } ?>

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.