A
A
Alexey Verkhovtsev2016-08-07 23:31:09
PHP
Alexey Verkhovtsev, 2016-08-07 23:31:09

How to remove a section and everything in it from an infoblock?

Help, you need to remove the section from the infoblock and below everything that is in it, the code is like this

<?
$IBLOCK_ID = 2;
$arFilter = Array(
  'IBLOCK_ID' => $IBLOCK_ID, 
  'GLOBAL_ACTIVE'=>'Y');
$obSection    = CIBlockSection::GetTreeList($arFilter);
?>
<? while($arResult = $obSection->GetNext()): ?>
  <?
  $this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
  $this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
  ?>
  <div class="col-md-3">
    <h3 id="<?= $this->GetEditAreaId($arItem['ID']); ?>"><?= $arResult['NAME']; ?>55</h3>
    <?
echo '<pre>';
  print_r($arResult);
  echo '</pre>';
    ?>
    <ul>
      <?
      $arFilter = array('SECTION_ID' =>  $arResult['SECTION_ID']);
      $arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL");
      $res = CIBlockElement::GetList(Array(), $arFilter, false, Array('nPageSize' => 50), $arSelect);
      ?>
      <? while($ob = $res->GetNextElement()): ?>
      <? $arFields = $ob->GetFields(); ?>
      <li><a href="<?= $arFields['DETAIL_PAGE_URL']; ?>"><?= $arFields['NAME']; ?></a></li>
      <? endwhile; ?>
    </ul>
  </div>
<? endwhile; ?>

But damn it, what should I write in this line $arFilter = array('SECTION_ID' => $arResult['SECTION_ID']); I don't understand which field to select

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
Alexey Verkhovtsev, 2016-08-07
@seftomsk

That is, it does not return the SECTION_ID element in the array, as I understood when I looked at the entire array, but it returns [SECTION_PAGE_URL] => /services/list.php?SECTION_ID=4 and from here how can 4 be pulled out?

Y
Yaroslav Alexandrov, 2016-08-08
@alexyarik

Что это за код, от куда вы его взяли, на какой странице он размещен, какой должен быть результат? Если это компонент тогда лучше залейте его архивом в Яндекс диск и дайте ссылку. Чем больше вы предоставите информации, тем больше вероятность, что ва помогут

Станислав Харахнин, 2016-08-10
@Chupokabr

Жесть.
Во первых старайтесь не делать выборки в циклах, потому что нагрузка будет расти дико.
Будет меньше вопросов, если вы все же загляните в документацию.
dev.1c-bitrix.ru/api_help/iblock/classes/ciblockse... - Ваш метод. Он выполняет CIBlockSection::GetList и сортирует результат в виже дерева.
dev.1c-bitrix.ru/api_help/iblock/classes/ciblockse...
Для получения ID раздела, просто возьмите $arResult['ID'] (Это и есть ID категории)
Замените
на
тогда вы сразу получить ассоциативный массив $ob['NAME'] и т.д.
Удалите
Этот код вообще не работает, потому что у Вас нет массива $arItem. Замените $arItem на $arResult

<?
  $this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
  $this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
  ?>
<h3 id="<?= $this->GetEditAreaId($arItem['ID']); ?>">

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question