Skip to main content

A FAQ engine for Django Fluent CMS

Project description

django-fluent-faq

This Django application adds a FAQ engine to sites built with django-fluent CMS.

Features:

  • Multilingual

  • Multisite

  • Categories and questions

  • SEO fields (meta keywords, description)

Used applications:

Installation

First install the module, preferably in a virtual environment:

git clone https://github.com/edoburu/django-fluent-faq.git
cd django-fluent-faq
pip install .

# Install the plugins of fluent-contents that you use:
pip install django-fluent-contents[text]

# Optional: to add tagging support + autocomplete use:
pip install django-taggit django-taggit-autocomplete-modified

Configuration

Add the applications to settings.py:

INSTALLED_APPS += (
    # FAQ engine
    'fluent_faq',

    # The content plugins
    'fluent_contents',
    'fluent_contents.plugins.text',

    # Support libs
    'categories',
    'categories.editor',
    'django_wysiwyg',

    # Optional tagging
    'taggit',
    'taggit_autocomplete_modified',
)

DJANGO_WYSIWYG_FLAVOR = "yui_advanced"

Note that not all applications are required; tagging is optional, and so are the various fluent_contents.plugin.* packages.

Include the apps in urls.py:

urlpatterns += patterns('',
    url(r'^admin/util/taggit_autocomplete_modified/', include('taggit_autocomplete_modified.urls')),
    url(r'^faq/', include('fluent_faq.urls')),
)

The database can be created afterwards:

./manage.py syncdb

In case additional plugins of django-fluent-contents are used, follow their installation instructions as well. Typically this includes:

  • adding the package name to INSTALLED_APPS.

  • running pip install django-fluent-contents[pluginname]

  • running ./manage.py syncdb

Configuring allowed plugins

To limit which plugins for django-fluent-contents can be used in the FAQ answer, use:

FLUENT_CONTENTS_PLACEHOLDER_CONFIG = {
    'faq_answer': {
        'plugins': (
            'TextPlugin', 'PicturePlugin', 'OEmbedPlugin', 'SharedContentPlugin', 'RawHtmlPlugin',
        ),
    },
}

Configuring the templates

To display the blog contents, a fluent_faq/base.html file needs to be created. This will be used to map the output of the module to your site templates.

The base template needs to have the blocks:

  • content - displays the main content

  • sidebar_content - displays the sidebar content

  • title - the title fragment to insert to the <title> tag.

  • meta-title - the full contents of the <title> tag.

  • meta-description - the value of the meta-description tag.

  • meta-keywords - the value for the meta-keywords tag.

  • og-type - the OpenGraph type for Facebook (optional)

  • og-description the OpenGraph description for Facebook (optional)

The fluent_faq/base.html template could simply remap the block names to the site’s base.html template. For example:

{% extends "base.html" %}

{% block headtitle %}{% block title %}{% endblock %}{% endblock %}

{% block main %}
    {# This area is filled with the question details:
    {% block content %}{% endblock %}

    {# Add any common layout, e.g. a sidebar here #}
    {% block sidebar_content %}{% endblock %}
{% endblock %}

When all other block names are already available in the site’s base.html template, this example should be sufficient.

Adding pages to the sitemap

Optionally, the blog pages can be included in the sitemap. Add the following in urls.py:

from fluent_faq.sitemaps import FaqQuestionSitemap, FaqCategorySitemap

sitemaps = {
    'faq_questions': FaqQuestionSitemap,
    'faq_categories': FaqCategorySitemap,
}

urlpatterns += patterns('',
    url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
)

Integration with django-fluent-pages:

To integrate with the page types of django-fluent-pages, don’t include fluent_blogs.urls in the URLconf:

urlpatterns += patterns('',
    url(r'^admin/util/taggit_autocomplete_modified/', include('taggit_autocomplete_modified.urls')),
)

Instead, add a page type instead:

INSTALLED_APPS += (
    'fluent_pages',
    'fluent_faq.pagetypes.faqpage',
)

A “FAQ Module” page can now be created in the page tree of django-fluent-pages at the desired URL path.

Contributing

This module is designed to be generic, and easy to plug into your site. In case there is anything you didn’t like about it, or think it’s not flexible enough, please let us know. We’d love to improve it!

If you have any other valuable contribution, suggestion or idea, please let us know as well because we will look into it. Pull requests are welcome too. :-)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-fluent-faq-1.0.tar.gz (29.3 kB view details)

Uploaded Source

Built Distribution

django_fluent_faq-1.0-py2.py3-none-any.whl (41.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-fluent-faq-1.0.tar.gz.

File metadata

File hashes

Hashes for django-fluent-faq-1.0.tar.gz
Algorithm Hash digest
SHA256 a86c34e0f592b4f6508b39bba1e40d755446c3eb3bb0d2bcf59c3f3711887081
MD5 a08fa9fc84c1591ba3dac35812475b6e
BLAKE2b-256 5d4ded71130a1bf6adb2e099c48d430eca5e9149c95ec8c5a7870b06ef8e21a6

See more details on using hashes here.

File details

Details for the file django_fluent_faq-1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_fluent_faq-1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 00ac9f25686ca03fc3798657f4b71e14147a8bc532b629a6f3008d539440b6b1
MD5 a197c8a5b4904bd2ee75640b6feeb303
BLAKE2b-256 5480782120d200ba0b2baa155d046587fbbf10da6b767b0fe88e3fa0a4fc56ea

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page