Отключение отображения цен в Bitrix – частая задача при разработке закрытых B2B-платформ, внутренних каталогов или витрин с ограниченным доступом. Однако простое скрытие блока с ценой через CSS или JavaScript приводит к уязвимостям: данные продолжают загружаться на страницу и доступны через инспектор кода. Такой подход нарушает логику контроля доступа и может повлечь утечку информации.
Важно учитывать, что скрытие должно происходить на всех уровнях: карточка товара, список, сравнение, быстрый просмотр. Недостаточно править один шаблон – потребуется модифицировать несколько включаемых файлов и AJAX-запросов. Дополнительно – убедитесь, что в REST API и коммерческих предложениях цены также недоступны без авторизации. Это особенно критично при использовании внешней интеграции с CRM или мобильными приложениями.
Для полной изоляции цен рекомендуется задействовать настройки коммерческого каталога и управляемого кеша. Удаление или переопределение соответствующих полей в CIBlockElement::GetList() позволяет исключить данные на уровне выборки, снижая риски утечки через сторонние модули или шаблоны.
Настройка прав доступа для групп пользователей в административной панели
Перейдите в административную панель: «Настройки» → «Пользователи» → «Группы пользователей». Создайте новую группу или выберите существующую.
Нажмите «Права доступа» и выберите модуль «Каталог». Установите уровень доступа «Чтение» или «Запрещён», если нужно скрыть цены. При значении «Чтение» пользователи смогут видеть товары, но без цен. При значении «Запрещён» доступ к модулю будет полностью закрыт.
Для модуля «Интернет-магазин» аналогично задайте права «Запрещён» или «Ограниченный доступ», чтобы исключить отображение цен и кнопок покупки. Если используется компонент catalog.section, отключите параметр отображения цены через шаблон компонента или установите проверку на группу пользователя в шаблоне.
После настройки прав обязательно очистите кэш сайта: «Настройки» → «Кэширование» → «Очистить всё». Это позволит сразу увидеть результат изменений.
Проверьте результат в режиме инкогнито, авторизовавшись под пользователем из настроенной группы. Убедитесь, что цены скрыты на всех уровнях – список товаров, карточка, быстрый просмотр.
Скрытие цен с помощью условий компонента каталога
В компоненте каталога Битрикс (например, bitrix:catalog.section) можно управлять отображением цен через параметр «HIDE_NOT_AVAILABLE» и произвольные условия в шаблоне. Для точного контроля нужно редактировать шаблон компонента: перейдите в папку /bitrix/templates/ваш_шаблон/components/bitrix/catalog.section/шаблон/ и откройте файл template.php.
Чтобы скрыть цены для неавторизованных пользователей, используйте конструкцию:
<?php if ($USER->IsAuthorized()): ?>
<div class="price"><?= $arItem["MIN_PRICE"]["PRINT_VALUE"] ?></div>
<?php endif; ?>
Если необходимо скрыть цены для определённых групп, примените проверку $USER->GetUserGroupArray(). Пример для исключения группы с ID 3:
<?php
$userGroups = $USER->GetUserGroupArray();
if (!in_array(3, $userGroups)) {
echo '<div class="price">' . $arItem["MIN_PRICE"]["PRINT_VALUE"] . '</div>';
}
?>
Для повышения производительности не дублируйте проверку в каждом товаре. Вынесите условие в начало цикла и задайте флаг отображения цен:
<?php
$showPrices = $USER->IsAuthorized();
foreach ($arResult["ITEMS"] as $arItem):
?>
<?php if ($showPrices): ?>
<div class="price"><?= $arItem["MIN_PRICE"]["PRINT_VALUE"] ?></div>
<?php endif; ?>
<?php endforeach; ?>
Также можно использовать параметры компонента для фильтрации элементов с ценой или без. Параметр «PRICE_CODE» задаёт список типов цен, отображаемых в компоненте. Чтобы отключить их, временно передавайте пустой массив из вызова компонента.
Любые изменения сохраняйте в шаблоне компонента, а не в ядре. Это исключит потерю изменений при обновлении системы.
Использование шаблонов компонента для удаления блока с ценой
Чтобы исключить отображение цен в компонентах Битрикс, корректнее всего внести изменения в шаблоны компонента, а не использовать CSS или JS, которые оставляют данные в коде страницы.
Порядок действий:
- Откройте административную панель и перейдите в раздел «Компоненты» → «Шаблоны компонентов».
- Выберите нужный шаблон. Если он не переопределён, скопируйте его из /bitrix/components/bitrix/ в /local/templates/ваш_шаблон/components/bitrix/.
- Откройте файл шаблона, чаще всего это
template.php
илиitem.php
, в зависимости от структуры компонента. - Удалите или закомментируйте соответствующие HTML-блоки с этими переменными.
Пример:
<?php if ($arItem['MIN_PRICE']) { ?>
<div class="price"><?= $arItem['MIN_PRICE']['PRINT_VALUE'] ?></div>
<?php } ?>
Удалите весь этот блок, чтобы цена не передавалась в верстку:
<!-- Цена удалена из шаблона -->
После изменений очистите кэш компонентов и страницы. Это можно сделать через административную панель: «Настройки» → «Производительность» → «Очистка кеша».
Не редактируйте шаблоны в /bitrix/components/bitrix/, иначе при обновлении ядра изменения будут потеряны. Всегда используйте копии в /local/templates/.
Если компонент использует AJAX-подгрузку цен, проверьте файлы result_modifier.php и ajax.php на передачу цен и удалите соответствующие элементы массива $arResult
или $arItem
.
Отключение отображения цен в публичной части через CSS и JS
Для скрытия цен на сайте, работающем на 1С-Битрикс, без вмешательства в PHP-код, допустимо использовать CSS и JavaScript. Этот метод подходит для временного отключения отображения цен, например, при переходе на оптовую модель или закрытом прайсинге.
Добавьте следующий CSS в шаблон сайта или пользовательский файл стилей:
/* Скрытие цен через CSS */
.price,
.catalog-price,
.product-item-price-current {
display: none !important;
}
Если цены подгружаются динамически, одного CSS недостаточно. В этом случае используйте JavaScript. Вставьте скрипт перед закрывающим тегом </body>
или в подключаемом JS-файле шаблона:
// Удаление цен через JavaScript
document.addEventListener("DOMContentLoaded", function() {
const selectors = [
'.price',
'.catalog-price',
'.product-item-price-current'
];
selectors.forEach(function(selector) {
document.querySelectorAll(selector).forEach(function(el) {
el.remove();
});
});
});
Для защиты от повторного отображения цен при AJAX-загрузке используйте MutationObserver:
// Наблюдение за изменениями DOM
const observer = new MutationObserver(() => {
document.querySelectorAll('.price, .catalog-price, .product-item-price-current').forEach(el => el.remove());
});
observer.observe(document.body, { childList: true, subtree: true });
Обратите внимание: этот метод не отключает цены в исходном коде страницы. Для полной защиты от индексации цен поисковиками используйте серверные методы.
Как скрыть цены только для неавторизованных пользователей
global $USER;
if ($USER->IsAuthorized()) {
echo $arResult["PRICES"]["BASE"]["PRINT_VALUE"];
} else {
echo 'Авторизуйтесь, чтобы увидеть цену';
}
Если используется шаблон компонента, откройте файл template.php
и внедрите аналогичную проверку в нужном месте. Избегайте использования JavaScript или CSS для скрытия цен – это неэффективно и не защищает данные.
Если используется комплексный компонент bitrix:catalog
, добавьте проверку в файл section.php
и element.php
шаблона компонента. Не забудьте очистить кеш после изменений.
Удаление цены из результатов поиска и фильтрации товаров
Для исключения цен из AJAX-запросов фильтрации нужно модифицировать параметры фильтра в файле component_epilog.php
или в обработчиках событий, удаляя ключи цен из массива фильтра. Это предотвратит передачу цен в результирующий набор.
Важно обновлять кеш компонентов после внесения изменений. Для этого используйте вызов $this->clearResultCache()
внутри компонента или очистите кеш через административную панель.
Скрытие цен в мобильной версии сайта на Битрикс
Для скрытия цен в мобильной версии на Битрикс необходимо учесть особенности адаптивного шаблона и динамической подгрузки контента. Обычно мобильная версия использует отдельные CSS-классы или шаблоны, отличающиеся от десктопных. Первый шаг – определить, каким образом отображаются цены именно в мобильном режиме: через отдельные компоненты или адаптивные стили.
Используйте в шаблоне условные конструкции PHP, ориентированные на пользовательский агент или параметр $APPLICATION->GetCurPage()
с анализом вида страницы, чтобы подключать отдельные шаблоны без блока с ценами для мобильных устройств.
Если мобильная версия реализована через адаптивный дизайн, скрывайте цены через CSS с использованием медиа-запросов, например:
@media (max-width: 768px) {
.price-block {
display: none !important;
}
}
Однако этот способ не гарантирует полное исключение цены из кода страницы – данные останутся в исходном HTML, что может быть нежелательно с точки зрения SEO и безопасности.
Важно проверить кеширование страниц и компонентов, чтобы изменения корректно применялись в мобильной версии. Очистка кеша после внесения изменений обязательна.
Подытоживая, скрытие цен в мобильной версии требует сочетания серверных настроек шаблонов и компонентов, а также целенаправленной работы с CSS и кешированием, чтобы добиться чистого и корректного результата без ошибок и утечки данных.
Проверка корректности скрытия цен через режим отладки
Для точной проверки скрытия цен в Битрикс необходимо активировать встроенный режим отладки и выполнить последовательные действия.
- Включите режим отладки в файле
/.settings.php
или через административную панель (раздел «Настройки» → «Настройки продукта» → «Производительность»). - Откройте страницу с товаром или списком товаров, где должны быть скрыты цены.
- Используйте инструменты разработчика браузера (F12) для анализа DOM-структуры:
- Проверьте отсутствие элементов с классами или id, отвечающими за отображение цены (
.price
,#price
и подобные). - Убедитесь, что в исходном коде страницы отсутствуют значения цен, даже если они не отображаются визуально.
- Проверьте логи на предмет сообщений, связанных с модификацией шаблонов и фильтрацией цен.
- Обратите внимание на отсутствие ошибок в компонентах, которые обрабатывают цены, например,
bitrix:catalog.element
илиbitrix:catalog.section
. - Если используются пользовательские события или обработчики (например,
OnBeforeProlog
илиOnEndBufferContent
), в режиме отладки проследите их срабатывание и корректность выполнения. - Проверьте, что кеширование не влияет на отображение: отключите кеш компонентов и повторите проверку отображения цен.
При систематическом выполнении этих шагов гарантируется точное выявление проблем с скрытием цен и их устранение без скрытых ошибок.
Вопрос-ответ:
Какими способами можно скрыть цены на сайте, созданном на Битрикс, чтобы не повредить работе каталога?
На платформе Битрикс существует несколько подходов для скрытия цен. Один из самых надёжных — это использование стандартных настроек компонента каталога, где можно отключить отображение цен для определённых групп пользователей или вовсе для всех. Также можно настроить права доступа к ценам через административную панель. Важно не менять напрямую шаблоны без понимания, иначе это может привести к сбоям в работе. Лучшим вариантом будет применять встроенные механизмы и дополнения, которые не нарушают логику сайта.
Можно ли скрыть цены только для незарегистрированных пользователей, оставив их видимыми для авторизованных? Как это сделать?
Да, такой вариант часто используется для мотивации посетителей к регистрации. В настройках Битрикс можно ограничить видимость цен по группам пользователей. Для этого в разделе управления доступом создают условие, при котором цены отображаются только для группы «авторизованные пользователи». При этом для гостей цена просто не выводится в шаблоне. Обычно требуется внести изменения в шаблон компонента каталога, добавив проверку статуса пользователя и скрывая блок с ценой при отсутствии авторизации.
Что нужно учитывать, чтобы скрытие цен не повлияло на работу корзины и оформление заказа в Битрикс?
При скрытии цен важно сохранить корректность передачи данных в корзину и при оформлении заказа. Даже если цена не отображается на сайте, она должна присутствовать в базе и передаваться в систему заказов, иначе система не сможет рассчитать сумму. Рекомендуется не убирать цену из массива данных, а только скрывать её визуальное отображение. Также стоит проверить, что методы и компоненты, отвечающие за оформление, получают цену корректно и не вызывают ошибок.
Можно ли скрыть цены на отдельные товары или категории, оставив их видимыми на остальных страницах?
Да, в Битрикс можно сделать выборочную маскировку цен. Для этого в настройках каталога или в коде компонента можно прописать условие, проверяющее принадлежность товара к определённой категории или наличие специального свойства. Если условие выполняется, цена не отображается. Это позволяет гибко управлять видимостью цен в зависимости от бизнес-задач и особенностей ассортимента, сохраняя при этом общий функционал каталога.
Какие распространённые ошибки возникают при попытке скрыть цены, и как их избежать?
Часто встречаются ошибки, связанные с неправильной правкой шаблонов или удалением важных частей кода, что приводит к сбоям отображения или работе корзины. Также бывает, что цена скрывается визуально, но остаётся доступной в исходном коде страницы, что нежелательно для некоторых задач. Чтобы избежать проблем, нужно использовать стандартные возможности Битрикс для управления правами доступа и работать через параметры компонентов, не удаляя ключевые элементы. Важно тестировать изменения на разных типах пользователей и сценариях.