PHPackages                             restruct/silverstripe-faq - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. restruct/silverstripe-faq

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

restruct/silverstripe-faq
=========================

Silverstripe FAQ Module

1.0.5(5mo ago)0147↓100%PHP

Since Nov 11Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/restruct/silverstripe-faqs)[ Packagist](https://packagist.org/packages/restruct/silverstripe-faq)[ RSS](/packages/restruct-silverstripe-faq/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (7)Used By (0)

Restruct FAQ Module
===================

[](#restruct-faq-module)

A SilverStripe 5 module for managing and displaying frequently asked questions (FAQs).

Features
--------

[](#features)

- **FAQ Categories**: Organize FAQs into categories
- **FAQs**: Manage questions and answers with HTML formatting
- **FAQ Pages**: Display selected categories and their FAQs on a page
- **Sort Order**: Automatic and manual sorting of FAQs within categories
- **CMS Management**: Dedicated ModelAdmin section for managing FAQs and categories

Installation
------------

[](#installation)

After adding the module:

```
composer dump-autoload
vendor/bin/sake dev/build flush=1
```

Usage
-----

[](#usage)

### In the CMS

[](#in-the-cms)

1. **Managing FAQs**: Go to "FAQs" in the main menu

    - First create categories under the "Faq Category" tab
    - Then add FAQs under the "Faq Question" tab
    - Assign each FAQ to a category
2. **Creating an FAQ Page**:

    - Create a new page of type "FAQ Page"
    - Go to the "FAQCategories" tab
    - Select which categories you want to display on this page
    - Categories are displayed in the order they were added

Template Customization
----------------------

[](#template-customization)

The default FAQ page template (`templates/Restruct/FAQ/Pages/Layout/FAQPage.ss`) uses a **custom accordion** implementation with vanilla JavaScript and CSS - no external dependencies required.

### Client Assets

[](#client-assets)

The module includes the following client-side files:

1. **faq-accordion.js**: Core accordion functionality

    - Handles expand/collapse behavior
    - Dispatches `faq:opened` custom events for tracking
    - Keyboard navigation support
2. **faq-view-tracker.js**: Analytics tracking

    - Tracks when users open FAQ items
    - CSRF token protection
    - Session-based deduplication
3. **faq-accordion.css**: Accordion styling

    - Clean, modern design
    - Smooth transitions
    - Mobile responsive

### Customizing the Template

[](#customizing-the-template)

You can customize the FAQ display in several ways:

1. **Override the template**: Create your own template in your theme directory:

    ```
    themes/your-theme/templates/Restruct/FAQ/Pages/Layout/FAQPage.ss

    ```
2. **Override the styles**: Override CSS variables or classes in your theme's stylesheet
3. **Extend functionality**: Listen to the `faq:opened` custom event to add your own behavior:

    ```
    document.addEventListener('faq:opened', function(event) {
        console.log('FAQ opened:', event.detail.faqId);
    });
    ```

### Template Structure

[](#template-structure)

The template provides two main methods:

- `$CategoriesWithFaqs`: Returns categories with their associated FAQs grouped together
- `$AllFaqs`: Returns all FAQs for the selected categories (ungrouped)

Refer to the default template for implementation examples.

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance70

Regular maintenance activity

Popularity13

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

6

Last Release

171d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4d3680d6353e5f171543435b89965ba2588186ad7ec0ec97cbf572704fec2a4f?d=identicon)[micschk](/maintainers/micschk)

---

Top Contributors

[![hubertusanton](https://avatars.githubusercontent.com/u/582188?v=4)](https://github.com/hubertusanton "hubertusanton (6 commits)")[![micschk](https://avatars.githubusercontent.com/u/1005986?v=4)](https://github.com/micschk "micschk (4 commits)")[![patjnr](https://avatars.githubusercontent.com/u/435055?v=4)](https://github.com/patjnr "patjnr (3 commits)")

---

Tags

FAQfrequently asked questions

### Embed Badge

![Health badge](/badges/restruct-silverstripe-faq/health.svg)

```
[![Health](https://phpackages.com/badges/restruct-silverstripe-faq/health.svg)](https://phpackages.com/packages/restruct-silverstripe-faq)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
