Как скрыть цены на сайте битрикс

Как скрыть цены на сайте битрикс

Отключение отображения цен в 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, которые оставляют данные в коде страницы.

Порядок действий:

  1. Откройте административную панель и перейдите в раздел «Компоненты» → «Шаблоны компонентов».
  2. Выберите нужный шаблон. Если он не переопределён, скопируйте его из /bitrix/components/bitrix/ в /local/templates/ваш_шаблон/components/bitrix/.
  3. Откройте файл шаблона, чаще всего это template.php или item.php, в зависимости от структуры компонента.
  4. Удалите или закомментируйте соответствующие 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

Отключение отображения цен в публичной части через 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 и кешированием, чтобы добиться чистого и корректного результата без ошибок и утечки данных.

Проверка корректности скрытия цен через режим отладки

Для точной проверки скрытия цен в Битрикс необходимо активировать встроенный режим отладки и выполнить последовательные действия.

  1. Включите режим отладки в файле /.settings.php или через административную панель (раздел «Настройки» → «Настройки продукта» → «Производительность»).
  2. Откройте страницу с товаром или списком товаров, где должны быть скрыты цены.
  3. Используйте инструменты разработчика браузера (F12) для анализа DOM-структуры:
    • Проверьте отсутствие элементов с классами или id, отвечающими за отображение цены (.price, #price и подобные).
    • Убедитесь, что в исходном коде страницы отсутствуют значения цен, даже если они не отображаются визуально.
    • Проверьте логи на предмет сообщений, связанных с модификацией шаблонов и фильтрацией цен.
    • Обратите внимание на отсутствие ошибок в компонентах, которые обрабатывают цены, например, bitrix:catalog.element или bitrix:catalog.section.
  4. Если используются пользовательские события или обработчики (например, OnBeforeProlog или OnEndBufferContent), в режиме отладки проследите их срабатывание и корректность выполнения.
  5. Проверьте, что кеширование не влияет на отображение: отключите кеш компонентов и повторите проверку отображения цен.

При систематическом выполнении этих шагов гарантируется точное выявление проблем с скрытием цен и их устранение без скрытых ошибок.

Вопрос-ответ:

Какими способами можно скрыть цены на сайте, созданном на Битрикс, чтобы не повредить работе каталога?

На платформе Битрикс существует несколько подходов для скрытия цен. Один из самых надёжных — это использование стандартных настроек компонента каталога, где можно отключить отображение цен для определённых групп пользователей или вовсе для всех. Также можно настроить права доступа к ценам через административную панель. Важно не менять напрямую шаблоны без понимания, иначе это может привести к сбоям в работе. Лучшим вариантом будет применять встроенные механизмы и дополнения, которые не нарушают логику сайта.

Можно ли скрыть цены только для незарегистрированных пользователей, оставив их видимыми для авторизованных? Как это сделать?

Да, такой вариант часто используется для мотивации посетителей к регистрации. В настройках Битрикс можно ограничить видимость цен по группам пользователей. Для этого в разделе управления доступом создают условие, при котором цены отображаются только для группы «авторизованные пользователи». При этом для гостей цена просто не выводится в шаблоне. Обычно требуется внести изменения в шаблон компонента каталога, добавив проверку статуса пользователя и скрывая блок с ценой при отсутствии авторизации.

Что нужно учитывать, чтобы скрытие цен не повлияло на работу корзины и оформление заказа в Битрикс?

При скрытии цен важно сохранить корректность передачи данных в корзину и при оформлении заказа. Даже если цена не отображается на сайте, она должна присутствовать в базе и передаваться в систему заказов, иначе система не сможет рассчитать сумму. Рекомендуется не убирать цену из массива данных, а только скрывать её визуальное отображение. Также стоит проверить, что методы и компоненты, отвечающие за оформление, получают цену корректно и не вызывают ошибок.

Можно ли скрыть цены на отдельные товары или категории, оставив их видимыми на остальных страницах?

Да, в Битрикс можно сделать выборочную маскировку цен. Для этого в настройках каталога или в коде компонента можно прописать условие, проверяющее принадлежность товара к определённой категории или наличие специального свойства. Если условие выполняется, цена не отображается. Это позволяет гибко управлять видимостью цен в зависимости от бизнес-задач и особенностей ассортимента, сохраняя при этом общий функционал каталога.

Какие распространённые ошибки возникают при попытке скрыть цены, и как их избежать?

Часто встречаются ошибки, связанные с неправильной правкой шаблонов или удалением важных частей кода, что приводит к сбоям отображения или работе корзины. Также бывает, что цена скрывается визуально, но остаётся доступной в исходном коде страницы, что нежелательно для некоторых задач. Чтобы избежать проблем, нужно использовать стандартные возможности Битрикс для управления правами доступа и работать через параметры компонентов, не удаляя ключевые элементы. Важно тестировать изменения на разных типах пользователей и сценариях.

Ссылка на основную публикацию