Фрейм article__faq
Блок вопросов и ответов из набора данных faq, отобранных по слагу страницы, с разметкой FAQPage. Пустой список гасит блок целиком.
| Где стоит | вызывается из фреймов article, assistant, landing |
| Что читает | наборы ui (заголовок) и faq (вопросы), page.slug |
| Что вкладывает | — |
Разметка
<section class="opfaq" id="faq">
<!-- onpress/repeat {"source":"ui"} -->
<h2 class="opfaq__title" data-op-bind='{"text":"item.faq_title"}'></h2>
<!-- /onpress/repeat -->
<div class="opfaq__list">
<!-- onpress/repeat {"source":"faq","match":{"page":"page.slug"},"empty":"frame"} -->
<details class="opfaq__item">
<summary class="opfaq__q"><span class="opfaq__q-text" data-op-bind='{"text":"item.q"}'></span></summary>
<div class="opfaq__a" data-op-bind='{"html":"item.a"}'></div>
</details>
<!-- /onpress/repeat -->
</div>
<!-- onpress/faq-schema {"source":"faq","match":{"page":"page.slug"}} /-->
</section>
Данные
Набор faq — строки с полями page (слаг страницы), q, a; вариант на язык — faq@en и так далее. Заголовок блока берётся из поля faq_title набора ui на языке страницы. Повторитель с "empty":"frame" при пустом списке гасит весь фрейм: на странице без вопросов нет ни заголовка, ни пустой секции.
curl -s -X PUT "$API/data/faq@en" -H "Authorization: Bearer op_ВАШ_ТОКЕН" -H "X-OnPress-Blog-Id: $SITE" \
-H 'Content-Type: application/json' \
-d '{"items":[{"page":"canva","q":"Is it free?","a":"<p>You can start for free.</p>"}]}'
Когда брать
Когда вопросы живут в наборе, а не в тексте. Если вопросы пишутся в markdown страницы, берите фрейм faq со слотом: схема FAQPage на странице всё равно останется одна.