cfgov-sheer-templates
This is a repository of base templates for consumerfinance.gov pages
served by the Sheer engine.
This repo is currently housing templates that bridge the gap between the current
WordPress theme (cfpb_nemo) and future sitewide Sheer templates.
The hopeful, eventual end state of this repo is the single source for all
HTML, CSS, and JavaScript for sitewide use on consumerfinance.gov.
What's in this repo?
_layouts
Layouts pull together everything needed to display a whole page.
base.html
The base template on which all others are built. Includes:
<html>
{% import macros %}
<head>
{% block additional_styles %}
{% block head_scripts %}
</head>
<body>
{% block body_top %}
{% block include_header %}
{% block content %}
{% block include_footer %}
{% block body_bottom %}
{% block body_scripts %}
</body>
</html>
_includes
Includes are template partials and Jinja helpers.
nemo_header.html
, nemo_subnav.html
, and nemo_footer.html
Included in base.html
, these files contain replicas of the current
(as of November 2015) consumerfinance.gov header, navigation and footer,
adapted to have basic responsiveness.
Styles for these are found in nemo.less
and nemo-shim.less
.
secondary-navigation.html
This file sets up a left-hand navigation sidebar based on the designs modeled
by cfgov-refresh.
See below for further instructions.
macros.html
Stores macros that can be called in templates.
Imported into base.html
so that it's available everywhere.
How to use these
Coming soon: getting started instructions.
To activate the sidebar secondary navigation, first create a nav_items
variable
in a new include file in your project.
The recommended naming convention is _vars-<projectname>.html
.
Each item has three components: the path, an ID for the item, and the link text.
Use this example from the FinEd Resources project to guide you:
{% set nav_items = [
('/adult-financial-education/', 'adult-financial-education', 'Adult financial education'),
('/youth-financial-education/', 'youth-financial-education', 'Youth financial education'),
('/library-resources', 'library-resources', 'Resources for libraries'),
('/parents/', 'parents', 'Resources for parents'),
('/managing-someone-elses-money/', 'managing-someone-elses-money', 'Guides for managing someone else’s money'),
] -%}
On each page, after extending layout-side-nav.html
,
set the active_nav_id
variable to enable highlighting the current page,
and then import the _vars
file you just created:
{% set active_nav_id = 'library-resources' -%}
{% import '_vars-libraries.html' as libraries with context %}
You'll also want to grab the latest styles for the navigation component from
the cfgov-refresh project
If you'd like to use two-level sidebar navigation,
then for each parent nav item that will have children:
-
Add a fourth element, named <parentitem>.children
to the parent item
in the nav_items
declaration, like so:
('/library-resources', 'library-resources', 'Resources for libraries', libraries.children),
-
Add a line like this, above the nav_items
declaration:
{% set libraries = { 'children': null } if not libraries else libraries %}
-
Create a _vars-<parentitem>.html
file with a children
declaration:
{% set children = [
('/library-resources/program-ideas/', 'program-ideas', 'Program ideas'),
('/library-resources/librarian-training/', 'librarian-training', 'Librarian training'),
('/library-resources/marketing-materials/', 'marketing-materials', 'Marketing materials'),
('/library-resources/websites-videos-courses/', 'websites-videos-courses', 'Websites, videos, and courses'),
] -%}
-
Import the new _vars
file in the parent and its children,
under the import of the main _vars
file.
Continuing with the Libraries example, the first four lines of our
library-resources/index.html
file now look like this:
{% extends 'layout-side-nav.html' %}
{% set active_nav_id = 'library-resources' %}
{% import '_vars-libraries.html' as libraries with context %}
{% import '_vars-resources.html' as vars with context %}
Note: Use of this navigation sidebar requires your project to have the
cf-expandables package available.
Getting involved
We welcome your feedback and contributions.
Known issues
- cfgov-refresh demo banner needs to be made optional
Open source licensing info
- TERMS
- LICENSE
- CFPB Source Code Policy
Credits and references
- Jinja2 templating documentation