FAQs And Reviews Layouts
Global layout settings live in Balinot > Site.
Settings source:
- Native storage: balinot_theme_settings[site_options]
- FAQ key: site_options[faqs_settings][faqs_layout]
- FAQ intro key: site_options[faqs_settings][faqs_intro]
- Review key: site_options[reviews_settings][reviews_layout]
- Review CTA link: site_options[reviews_settings][reviews_archive_link]
Admin UI:
- wp-content/themes/balinot/setup/admin/site-options-page.php
FAQ rendering flow:
- Router: templates/partials/general/faqs.php
- Allowed layouts: split, centered
- Components:
- templates/components/faqs-1.php
- templates/components/faqs-2.php
Review rendering flow:
- Router: templates/partials/general/reviews.php
- Allowed layouts: featured, cards, stories
- Components:
- templates/components/reviews-1.php
- templates/components/reviews-2.php
- templates/components/reviews-3.php
Content source:
- FAQs are stored as the balinot_faq custom post type from modules/21-faqs.php.
- Reviews are stored as the balinot_review custom post type from modules/22-reviews.php.
- Both support page and product category matching through ACF relationship fields.
How to add a new FAQ layout:
- Create a new component in templates/components/, for example faqs-3.php.
- Update the allowed values in setup/includes/theme-options.php.
- Add the new option to the FAQ select field in setup/admin/site-options-page.php.
- Update templates/partials/general/faqs.php so the router can map the new layout to the new component.
- If the markup needs new JS behavior, make sure it still works with initFaqAccordions() from assets/js/theme.js.
How to add a new review layout:
- Create a new component in templates/components/, for example reviews-4.php.
- Update the allowed values in setup/includes/theme-options.php.
- Add the new option to the review select field in setup/admin/site-options-page.php.
- Update templates/partials/general/reviews.php to route to the new component.
- If the component uses Swiper, define a new swiper config in the router.
Rule to keep:
- The router partial should prepare data and choose the component.
- The component file should focus on markup only.
Last updated on