Customization

As more sites are built using Pinax, more best practices will emerge, but for now what we recommend is:

  • Choose which project you would like to use as a starting point.
  • Copy that project into a directory outside of the subversion checkout.
  • Make any necessary changes to your manage.py, deployment/*.wsgi etc in that copied project directory to reflect the location of your Pinax checkout. The most important variable to change in those files is PINAX_ROOT.
  • Make necessary changes to the settings.py and urls.py files in your copied directory.
  • Change the domain and display name of the Site in the admin interface.
  • Develop your custom apps under your new project or anywhere on Python path.
  • Develop your own templates under your new project.

Choosing a Project

By default, Pinax provides two projects to use as a starting point for customization. Depending on your development style, you may prefer one project over the other.

basic_project
This project comes with the bare minimum set of applications and templates to get you started. It includes no extra tabs–only the profile and notices tabs are included by default. From here you can add any extra functionality and applications that you would like.
complete_project
This project comes fully-featured, with everything that Pinax provides enabled by default. It provides all tabs available, etc. From here you can remove applications that you do not want to use, and add your own applications as well.

Settings You Will (Probably) Want To Override

  • DEBUG
  • TEMPLATE_DEBUG
  • LOGGING_OUTPUT_ENABLED
  • ADMINS
  • MANAGERS
  • DATABASE_ENGINE
  • DATABASE_NAME
  • DATABASE_USER
  • DATABASE_PASSWORD
  • DATABASE_HOST
  • DATABASE_PORT
  • TIME_ZONE
  • SECRET_KEY
  • DEFAULT_FROM_EMAIL
  • SERVER_EMAIL
  • MAILER_PAUSE_SEND
  • SEND_BROKEN_LINK_EMAILS
  • EMAIL_HOST
  • EMAIL_PORT
  • EMAIL_HOST_USER
  • EMAIL_HOST_PASSWORD
  • EMAIL_SUBJECT_PREFIX
  • EMAIL_DEBUG
  • CONTACT_EMAIL
  • URCHIN_ID
  • BBAUTH_APP_ID
  • BBAUTH_SHARED_SECRET
  • SITE_NAME

All but MAILER_PAUSE_SEND, CONTACT_EMAIL, URCHIN_ID, BBAUTH_APP_ID, BBAUTH_SHARED_SECRET and SITE_NAME are just the standard Django settings.

base.html versus site_base.html

In the sample projects, templates/base.html is intended for overall page structure whereas templates/site_base.html is intended for adding site-specific content that is to be found on all pages (things like logo, navigation or footers).

If you are writing a theme to be used across multiple sites, you should modify base.html, not site_base.html. If you want to keep a particular theme but modify content for a specific site, you should modify site_base.html.

Adding Tabs

See Tab Navigation