Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Отображение иерархии товаров

00 голосов
4
Есть установленная битрикс. Там есть демо каталог.
Называется он "продукция". Там есть разделы "офисная мебель", "стелажи", "прихожие" и т.д. И у этих разделов есть подразделы.
Щелкаем на меню "каталог". Видим список разделов. Щелкаем по разделу и видим все товары этого раздлеа всех подразделов. Как сделать так что бы при щелчке по разделу отображались только названия подразделов. А уже когда щелкаешь по подразделу, то был бы список товаров подраздела?
спросил 06 Янв, 14 от Jugolo (180 баллов)

4 Ответы

00 голосов
Самый простой способ это в шаблоне компонента catalog.section.list добавить проверку if(count($arResult["SECTIONS"])) и данные $arResult["SECTIONS"] вынести в отдельный цикл foreach.

Код
   <?
            $level = 0;
       $level += $arResult["SECTION"]["DEPTH_LEVEL"];
   ?>
   <ul class="dir-list clearfix">
   <?
       foreach($arResult["SECTIONS"] as $k => $v) :
   ?>
       <? if($v["DEPTH_LEVEL"] == $level) : ?>
       <li>
          <a class="pic" href="<?= $v["SECTION_PAGE_URL"] ?>" >
         <?
            $arFileTmp = CFile::ResizeImageGet(
               $v["PICTURE"]["ID"],
               array("width" => $width, "height" => $height),
               BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
               true
            );
         ?>
         <img src="<?= $arFileTmp["src"] ?>" />
          </a>
          <p><?= $v["NAME"]; ?></p>
       </li>
       <? endif; ?>
   <?
       endforeach;
   ?>
   </ul>

Вот пример вывода вложенных каталогов с изображениями.
ответил 11 Апр, 14 от Hongakaft (200 баллов)
00 голосов
Подскажите, у меня есть похожий вопрос.

У меня тоже есть каталог товаров.
Когда я щелкаю на меню "каталог", то у меня выдаются товары со всех разделов. Как мне сделать, что бы
при щелчке на кнопку "Каталог" отображались только названия разделов. А уже когда щелкаешь по разделу, то были бы названия подразделов?

Я понимаю, что решение похоже на предыдущий ответ, но я не понимаю какие параметры использовать.

Вот сайт - www.boris-i-pavel.ru

Спасибо
Денис

Вот код выгрузки товаров на страницу:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section">
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
   <?=$arResult["NAV_STRING"]?><br />
<?endif;?>

<?
// если переменные $by и $order явно заданы, то их значения запоминаются в сессии
// иначе они инициализируется значениями хранимыми в сессии
InitSorting(
 $by="name",
 $order="asc"
);
$rsUsers = CUser::GetList($by, $order);
?>



<table>
<tr>
<td><b>Сортировать по:</b></td>
<td>названию<?=SortingEx("name")?></td>
<td>ТМ<?=SortingEx("PROPERTY_CML2_NAME_3")?></td>
<td>месту пр-ва<?=SortingEx("PROPERTY_CML2_COUNTRY")?></td>
<td>сроку годности<?=SortingEx("PROPERTY_CML2_EXPIRY")?></td>
</tr>
</table> 

<br>
<br>
         <table width ="100%" cellpadding="0" cellspacing="0" border="0">
          <thead>
            <tr>
               <td width="35%" align="center" valign="center"><b></b></td>
               <td width="65%" align="center" valign="center"><b></b></td>

            </tr>
          </thead>

<tbody>

<?foreach($arResult["ITEMS"] as $cell=>$arElement):?>

<tfoot>
<tr>
<td colspan="5" align="center"><IMG SRC="/products/line_small_2.JPG"></td>
</tr>
</tfoot>


<td valign="center" align="center">
<a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><img border="1" src="<?=$arElement["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arElement["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arElement["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arElement["NAME"]?>" title="<?=$arElement["NAME"]?>" /></a>
<br><a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><b>Подробнее &#8594;</b></a>
</td>

<td valign="center">
<a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><b><?=$arElement["PROPERTIES"]["CML2_NAME"]["VALUE"]?> <?=$arElement["PROPERTIES"]["CML2_NAME_2"]["VALUE"]?></b></a>
<br>Торговая марка: <?=$arElement["PROPERTIES"]["CML2_NAME_3"]["VALUE"]?>
<br>Место производства: <?=$arElement["PROPERTIES"]["CML2_COUNTRY"]["VALUE"]?> <?=$arElement["PROPERTIES"]["CML2_ORIGIN"]["VALUE"]?>
<br>Жирность: <?=$arElement["PROPERTIES"]["CML2_FAT"]["VALUE"]?>
<br>Форма: <?=$arElement["PROPERTIES"]["CML2_HEAD"]["VALUE"]?>
<br>Вес кг: <?=$arElement["PROPERTIES"]["CML2_WEIGHT"]["VALUE"]?>
<br>Ед изм: <?=$arElement["PROPERTIES"]["CML2_BASE_UNIT"]["VALUE"]?>
<br>Срок годности: <?=$arElement["PROPERTIES"]["CML2_EXPIRY"]["VALUE"]?>

</td>



</tr>
   
      <?$cell++;
      if($cell%$arParams["LINE_ELEMENT_COUNT"] == 0):?>
         </tr>
      <?endif?>

      <?endforeach; // foreach($arResult["ITEMS"] as $arElement):?>

      <?if($cell%$arParams["LINE_ELEMENT_COUNT"] != 0):?>
         <?while(($cell++)%$arParams["LINE_ELEMENT_COUNT"] != 0):?>
            <td> </td>
         <?endwhile;?>
         </tr>
      <?endif?>

</tbody>
</table>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
   <br /><?=$arResult["NAV_STRING"]?>
<?endif;?>
</div> 
ответил 03 Авг, 14 от UnoL (340 баллов)
00 голосов
Цитата
Руслан пишет:
Самый простой способ это в шаблоне компонента catalog.section.list добавить проверку if(count($arResult["SECTIONS"])) и данные $arResult["SECTIONS"] вынести в отдельный цикл foreach.

Это немного не то. catalog.section.list выводит более менее то что надо (список разделов с подразделами). Инетресует catalog.section, который выводит ВСЕ товары раздела включая подразделы в одном списке.
ответил 06 Дек, 14 от Jugolo (180 баллов)
00 голосов
нашел вот такую штуку
http://www.bars-pro.ru/install_data/help/ru/index.html?page=source%2Fiblock%2Fhelp%2Fru%2Fiblock_type_edit.php.html

Цитата
Использовать древовидный классификатор элементов по разделам Если этот флаг установлен, информационные блоки данного типа будут иметь иерархическую структуру, т.е. они могут быть разбиты по разделам и подразделам (названия разделов и подразделов задаются в поле Разделы).

Такая организация элементов может быть применена, например, для объединения товаров в группы или классификации растений по родам, видам и т.п.

Если этот флаг сброшен, то информационные блоки этого типа не будут разбиваться по разделам.

но при установке или снятии этой галочки ничего не меняется. И раньше она у меня, кстати, стояла.
ответил 30 Март, 15 от Jugolo (180 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 08 Окт, 13 от Mortelle (180 баллов)
0 голосов
2 ответов
спросил 13 Сен, 13 от Frejho (580 баллов)