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

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


MaxPsm

Recommended Posts

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

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

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

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

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


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

Screenshot_3.jpg.77b01a433a17f7bf1a493dbfdebe1227.jpg

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


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

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

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

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


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

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

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


В 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 } ?>

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

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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