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

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

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    735
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1134

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

Оптовий клієнт заходить у каталог, бачить роздрібну ціну і йде — вирішивши, що дорого. Або конкурент моніторить ваші ціни через парсер. Приховування цін з кнопкою «Дізнатися ціну» вирішує обидві проблеми: 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 робочий день. Зв'яжіться з нами — підготуємо точний план робіт та терміни.