sfFaqPlugin - Bulletin Board / FAQ for Symfony
Overview
This plugin allows you to embed a FAQ module within your symfony application with the following features :
- Questions are grouped into Categories
- BackEnd Modules to manage categories and questions
- A category can be activated or desactivated
- The front can be full JS (no reload) OR one click reload the page with a good URL for search engine optimization
- i18n ready
Requirements
- Prototype (for FULL JS version)
Installation
To install the plugin for a symfony project, use the symfony command line:
$ php symfony plugin-install sfFaqPlugin-1.0.0.tgz
Alternatively, if you don't have installed PEAR, you can download the latest package attached to this plugin's wiki page and extract it under your project's plugins/ directory. You will also have to copy the contents of the myproject/plugins/sfFaqPlugin/web/ directory into a myproject/web/sfFaqPlugin/ directory.
Rebuild the model, generate the SQL code for the new tables and insert it into your database:
$ php symfony propel-build-all
Clear the cache to enable autoloading to find new classes:
$ php symfony cc
You can load included fixtures to start using FAQ with test data.
$ php symfony propel-load-data frontend plugins/sfFaqPlugin/data/fixtures
Configuration
setting.yml
Enable the new sfFaq module in your application, within settings.yml file.
// in myproject/apps/frontend/config/settings.yml
all:
.settings:
enabled_modules: [sfFaq](default,)
// in myproject/apps/backend/config/settings.yml
all:
.settings:
enabled_modules: [sfFaqAdminCategories, sfFaqAdminFaq](default,)
Start using the plugin by browsing front-end module's default page:
// FrontEnd
http://myproject/sfFaq
// BackEnd
http://myproject/backend.php/sfFaqAdminCategories
http://myproject/backend.php/sfFaqAdminFaq
app.yml
Plugin features can be altered by configuration. To do so, add some of the following lines to your application's app.yml:
// in myproject/apps/frontend/config/app.yml
all:
sfFaqPlugin:
title: FAQ # default : "FAQ", Title of page
separator: '-' # default : '|', Categories separator
question_separator: '---' # default : '<hr />', Questions separator
first_category_by_default: true # default : false, open the first category into load module
first_question_by_default: true # default : false, open the first question into load category
js: true # default : false, true for the FULL JS version
close_all_question_with_category: true # default : false, ONLY FOR JS VERSION, close all questions when you reload a category
Routing rules
The plugin doesn't come with any routing rule. However, you can add some of your own to make the URLs look nicer. An example of set of rules could be as follows:
# FAQ ADMIN
sf_faq_admin:
url: /faqAdmin
param: { module: sfFaqAdminCategories, action: index }
sf_faq_admin_categories:
url: /faqAdminCategories
param: { module: sfFaqAdminCategories, action: index }
sf_faq_admin_categories_edit:
url: /faqAdminCategories/edit/*
param: { module: sfFaqAdminCategories, action: edit }
sf_faq_admin_categories_create:
url: /faqAdminCategories/create/*
param: { module: sfFaqAdminCategories, action: create }
sf_faq_admin_categories_delete:
url: /faqAdminCategories/delete/*
param: { module: sfFaqAdminCategories, action: delete }
sf_faq_admin_categories_list:
url: /faqAdminCategories/list/*
param: { module: sfFaqAdminCategories, action: list }
sf_faq_faq_admin:
url: /faqAdminFaq
param: { module: sfFaqAdminFaq, action: index }
sf_faq_faq_admin_edit:
url: /faqAdminFaq/edit/*
param: { module: sfFaqAdminFaq, action: edit }
sf_faq_faq_admin_create:
url: /faqAdminFaq/create/*
param: { module: sfFaqAdminFaq, action: create }
sf_faq_faq_admin_delete:
url: /faqAdminFaq/delete/*
param: { module: sfFaqAdminFaq, action: delete }
sf_faq_faq_admin_list:
url: /faqAdminFaq/list/*
param: { module: sfFaqAdminFaq, action: list }
# FAQ
sf_faq_category:
url: /faq/category/:category_id/:category_name
param: { module: sfFaq, action: index }
sf_faq:
url: /faq/:faq_id/:question
param: { module: sfFaq, action: index }
sf_faq_default:
url: /faq
param: { module: sfFaq, action: index }
view.yml
// in myproject/apps/frontend/config/view.yml
all:
stylesheets: [myCustomStylesheet](/sfFaqPlugin/css/sf_faq,)
javascripts: [/sf/prototype/js/builder, /sf/prototype/js/effects](/sf/prototype/js/prototype,)
Credits
This plugin was developed by [Jonathan Demoutiez] during my job in [http://www.webpulser.com Webpulser](http://jonathan.demoutiez.net) : a french Web application development studio settled in Lille, northen France.
If you want to contribute, contact me.