Как убрать обертку компонента Bitrix вместе со всем его содержимым?

Здравствуйте! Можете подсказать, как настроить вывод компонента так, чтобы в зависимости от его состояния (например, найдены или не найдены записи для компонента news.list) управлять отображением внешней обёртки и дополнительно содержимым? <br/><br/> <pre><code class="php">&lt;div class="wrap"&gt;
    &lt;div class="before"&gt;Content before component&lt;/div&gt;
    &lt;?$APPLICATION-&gt;IncludeComponent(...);?&gt;
    &lt;div class="after"&gt;Content after component&lt;/div&gt;
&lt;/div&gt;</code></pre>
  • 20 марта 2025 г. 21:14
Ответы на вопрос 2
Для того чтобы управлять отображением внешней обертки компонента `news.list` в зависимости от состояния (например, найдены или не найдены записи), можно использовать свойство `$arResult` внутри компонента. Это свойство содержит необходимую информацию о результатах работы компонента.

В частности, в случае компонента `bitrix:news.list`, вы можете проверить наличие записей, используя `$arResult['ITEMS']`, который содержит массив элементов. Условие может выглядеть следующим образом:

```php
<div class="wrap">
    <?php if (!empty($arResult['ITEMS'])): ?>
        <div class="before">Content before component</div>
        <?php $APPLICATION->IncludeComponent(
            'bitrix:news.list',
            '',
            array(
                // параметры компонента
            ),
            false
        ); ?>
        <div class="after">Content after component</div>
    <?php else: ?>
        <div class="no-items">Не найдено записей.</div>
    <?php endif; ?>
</div>
```

В этом примере:

1. Проверяется, есть ли элементы в массиве `$arResult['ITEMS']`. Если они существуют, то выводится обертка с содержимым до и после компонента.
2. Если элементов нет, выводится сообщение о том, что записи не найдены, и обертка не выводится.

Также можно использовать `if` для управления содержимым внутри обертки. Таким образом, вам не придется полностью менять логику вывода компонента, и вы сможете настроить вывод в зависимости от состояния.
Первый способ, нужно внешнюю обёртку тоже поместить в шаблон компонента и ее скрывать в зависимости от условий. 

Второй способ, внешнюю обёртку оставить снаружи компонента, в компоненте создать файл component_epilog.php и в нём в зависимости от условия выводить css стиль, который будет скрывать внешнюю обёртку.
Похожие вопросы