Приховування цін у Бітрікс: кнопка «Дізнатися ціну»

Коли каталог показує роздрібні ціни, оптові клієнти йдуть, а конкуренти збирають дані парсерами. Ми налаштовуємо приховування цін з кнопкою «Дізнатися ціну» — так B2B-покупці залишають заявки, а парсери бачать порожнє поле. Наша команда реалізує рішення під ключ, з урахуванням прав доступу та типів цін, забезпечуючи стабільну роботу та подальшу підтримку.

Приховування цін у Бітрікс: кнопка «Дізнатися ціну»

Ціни та знижкиПростий~1 день
Часті запитання

Приховування цін з кнопкою «Дізнатися ціну»: архітектура та реалізація

Оптовий клієнт заходить у каталог, бачить роздрібну ціну і йде — вирішивши, що дорого. Або конкурент моніторить ваші ціни через парсер. Приховування цін з кнопкою «Дізнатися ціну» вирішує обидві проблеми: B2B-клієнт залишає заявку, а парсер отримує пусте поле замість числа.

Ми в команді налаштовували приховані ціни для проекту з 15 000+ товарів і 4 типами дилерів. Підхід виявився не таким тривіальним — довелося комбінувати права на типи цін, властивості інфоблоків і кастомну форму запиту. Нижче ділимося архітектурою і гарантуємо, що рішення впишеться у ваш каталог за термін від 2 годин.

Як зберігаються ціни в 1С-Бітрікс?

Ціна товару лежить у таблиці b_catalog_price, прив'язана до типу ціни (b_catalog_group). Компонент catalog.element використовує CCatalogProduct::GetOptimalPrice() — вибирає доступний тип ціни для поточного користувача. Якщо жоден тип ціни не дозволений, метод повертає порожній масив. Це і є точка для приховування.

Рівні приховування ціни

  1. Рівень шаблону компонента. Найпростіше: у template.php перевіряєте умову і замість ціни виводите кнопку. Умови: група користувача, властивість інфоблоку HIDE_PRICE, наявність певного типу ціни.

  2. Рівень типу ціни. Створюєте окремий тип ціни «За запитом» у Магазин → Налаштування → Типи цін. Товарам, для яких ціна прихована, не призначаєте роздрібну ціну. CCatalogProduct::GetOptimalPrice() не знаходить ціну — обробляєте в шаблоні.

  3. Рівень властивості інфоблоку. Додаєте властивість PRICE_ON_REQUEST типу «Список» (Так/Ні). У шаблоні перевіряєте значення властивості і підміняєте блок ціни на форму запиту. Цей спосіб зручний для масового управління через CommerceML.

Реалізація кнопки «Дізнатися ціну»

Кнопка має відкривати форму з мінімумом полів: ім'я, телефон/email, автоматично підставлений артикул товару. Основні варіанти:

Варіант Швидкість впровадження Додаткові можливості
bitrix:form.result.new 2–3 години Готові шаблони, подієва модель
BX.SidePanel 4–6 годин Не відводить зі сторінки, можна вбудувати CRM-форму
AJAX-запит 3–5 годин Мінімальна форма, повний контроль над дизайном

Заявка має потрапляти в CRM (якщо Бітрікс24) або відправлятися на email менеджеру. Для CRM використовуйте crm.lead.add через REST API або подію OnAfterResultAdd веб-форми з обробником створення ліда. На одному проекті через подію створювали не тільки лід, але й угоду з прив'язкою до товару через crm.item.add — клієнти отримували пропозицію з актуальною прихованою ціною.

Чому важливо перевіряти кошик?

Якщо ціна прихована на сторінці товару, але товар можна додати в кошик і оформити замовлення, сенс приховування втрачається. Потрібно перевизначити CatalogBasketProvider або перевіряти ціну в OnBeforeBasketAdd. Це часта помилка: забувають налаштувати кошик, і клієнти бачать ціну тільки на етапі оформлення.

Як організувати масове оновлення ознаки приховування?

Для каталогів від 1000 товарів використовуйте властивість інфоблоку PRICE_ON_REQUEST та імпорт з CSV або обмін з 1С (CommerceML). Ми пишемо скрипт-агент, який за 1-2 дні обходить всі товари і встановлює прапорець. Також можлива групова установка через API інфоблоків.

Приховування цін за групами користувачів

Для B2B-сценарію: авторизовані дилери бачать ціну, гості — кнопку запиту. Перевірка через $USER->GetUserGroupArray() у шаблоні компонента. Або через права доступу до типу ціни — в налаштуваннях типу ціни задаєте, які групи користувачів мають доступ. Метод CCatalogGroup::GetGroupsList() повертає дозволені групи.

Сценарій Підхід Термін налаштування
Приховування для всіх, кнопка «Дізнатися ціну» Властивість інфоблоку + доопрацювання шаблону 2–4 години
Приховування для гостей, показ для дилерів Права на тип ціни + перевірка групи 4–6 годин
Масове управління (1000+ товарів) Властивість + імпорт з CSV/1С 1–2 дні

Як ми налаштовували приховування цін у проекті з 4 рівнями дилерів

Конкретний кейс: інтернет-магазин запчастин. 4 групи дилерів, у кожної своя ціна на один і той самий товар. Роздрібна ціна показується тільки гостьовим користувачам, дилери бачать свою групову ціну. Завдання: приховати роздрібну ціну і для гостей, і для дилерів, тому що постачальник заборонив публікувати ціни.

Рішення: створили тип ціни «За запитом» без прив'язки до груп. Всім товарам призначили цей тип ціни з нулем. У шаблоні catalog.element додали перевірку: якщо тип ціни «За запитом» і ціна дорівнює 0, то виводимо кнопку «Дізнатися ціну». Для дилерів — додаткова перевірка: якщо користувач у групі дилерів, то замість кнопки показуємо його ціну (зберігається в окремій властивості інфоблоку). Форму реалізували через BX.SidePanel з формою на bitrix:form.result.new. Заявки йдуть у ліди через REST, менеджер бачить товар і групу клієнта — одразу може відповісти.

Які помилки допускають найчастіше

  • Забувають налаштувати права на тип ціни — тоді GetOptimalPrice() може повернути іншу доступну ціну, і приховування не спрацює.
  • Не перевіряють пусту ціну — кнопка «Дізнатися ціну» показується навіть якщо ціна фактично є (дорівнює 0).
  • Не враховують кошик — якщо ціна прихована, але товар можна додати в кошик і оформити замовлення, сенс приховування втрачається.
Права доступу до типів цін Метод `CCatalogGroup::GetGroupsList()` повертає масив дозволених груп для кожного типу ціни. Якщо жодна група не вказана, ціна видна всім. Переконайтеся, що для прихованого типу ціни не задані групи-виключення.

Що входить в роботу з налаштування прихованих цін

  • Аналіз поточної структури каталогу та типів цін.
  • Проектування логіки відображення (за групами, властивостями, умовами).
  • Реалізація шаблону компонента з кнопкою та формою.
  • Налаштування інтеграції з CRM (ліди/угоди).
  • Тестування на 10+ сценаріях (гість, дилер, парсер).
  • Документація з подальшого управління.

Оцінимо ваш проект за 1 робочий день. Зв'яжіться з нами — підготуємо точний план робіт та терміни.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    837
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    928
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    865
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1223