Налаштування FAQ-розділу на 1С-Bitrix
FAQ на Bitrix — це завжди компроміс між простотою управління для редактора та гнучкістю відображення для розробника. Два основних підходи: інфоблок з елементами «питання-відповідь» або модуль техпідтримки support. Для публічного FAQ на сайті інфоблок переважаніший.
Інфоблок для FAQ: мінімальна структура
Створіть інфоблок з символьним кодом faq. Властивості елемента:
- Назва елемента = питання (поле
NAMEуb_iblock_element) - Детальний опис = відповідь (поле
DETAIL_TEXT) -
SORT— сортування питань всередині категорії -
CATEGORY— властивість типу «Прив'язка до розділу» для групування за темами
Розділи інфоблока (b_iblock_section) служать категоріями FAQ — «Доставка», «Оплата», «Гарантія». Це зручніше, ніж окрема властивість-категорія, оскільки розділи підтримують вкладеність та автоматично фільтруються в компонентах.
Флаг ACTIVE дозволяє редакторам тимчасово скривати питання без видалення. Це важливо — без нього доводиться видаляти та пересоздавати.
Компонент виводу та accordion
Для списку FAQ оптимален bitrix:news.list з параметром IBLOCK_ID вашого FAQ-інфоблока. Детальні сторінки для FAQ зазвичай не потрібні — все виводиться на одній сторінці у вигляді аккордеону.
У template.php списку ітеруйтесь по $arResult["ITEMS"] і для групування по категоріях використовуйте властивість $arItem["IBLOCK_SECTION_ID"]. Предзавантажте розділи через CIBlockSection::GetList() у component_epilog.php та постройте карту section_id => section_name.
Аккордеон — чистий CSS або мінімальний JS. Без jQuery, без бібліотек:
document.querySelectorAll('.faq-question').forEach(el => {
el.addEventListener('click', function() {
this.closest('.faq-item').classList.toggle('is-open');
});
});
Стан відкритих питань у localStorage — опціонально, але корисно для довгого FAQ.
Schema.org розмітка для SEO
FAQ — один з небагатьох типів контенту, для якого Google показує rich results у пошуку. Розмітка FAQPage додає питання та відповіді прямо у сніппет поїскової видачі.
У шаблоні компонента генеруйте JSON-LD:
$faqSchema = ['@context' => 'https://schema.org', '@type' => 'FAQPage', 'mainEntity' => []];
foreach ($arResult["ITEMS"] as $item) {
$faqSchema['mainEntity'][] = [
'@type' => 'Question',
'name' => $item["NAME"],
'acceptedAnswer' => ['@type' => 'Answer', 'text' => strip_tags($item["DETAIL_TEXT"])]
];
}
echo '<script type="application/ld+json">' . json_encode($faqSchema, JSON_UNESCAPED_UNICODE) . '</script>';
Обмеження Google: не більше 20 питань у розмітці на одній сторінці. Якщо FAQ великий — виводіть розмітку тільки для верхніх 20 елементів по сортуванню.
Пошук по FAQ
При великій кількості питань потрібна фільтрація. Стандартний модуль пошуку Bitrix (search) індексує елементи інфоблоків автоматично — досить убедиться, що USE_SEARCH = Y у настройках інфоблока. Компонент bitrix:search.page виведе результати з обмеженням по інфоблоку.
Для миттєвого пошуку (без перезагрузки сторінки) — фільтруйте по атрибуту data-question через JS прямо у DOM: швидко, без серверних запитів, працює на кілька сотень питань без деградації.







