This CKAN Extension demonstrates some common patterns for customising a CKAN instance.
It comprises:
ckanext/example/plugin.py
which, when loaded, overrides various settings in the core ini
-file to provide:
To install this package, from your CKAN virtualenv, run the following from your CKAN base folder (e.g. pyenv/
):
pip install -e git+https://github.com/okfn/ckanext-example#egg=ckanext-example
Then activate it by setting ckan.plugins = example
in your main ini
-file.
ckanext/example/plugin.py
extra_public_paths
and extra_template_paths
in the CKAN config, which are “documented here”: http://docs.ckan.org/en/latest/configuration.html#extra-template-pathsThese are set to point at directories within ckanext/example/theme/
(in this package). Here we: * override the home page HTML ckanext/example/theme/templates/home/index.html
* provide some extra style by serving extra.css
(which is loaded using the ckan.template_head_end
option * customise the navigation and header of the main template in the file layout.html
.
The latter file is a great place to make global theme alterations. It uses the _layout template_ pattern “described in the Genshi documentation”:http://genshi.edgewall.org/wiki/GenshiTutorial#AddingaLayoutTemplate. This allows you to use Xpath selectors to override snippets of HTML globally.
package_form.py
follows a deprecated way to make a form (using FormAlchemy). This part of the Example Theme needs updating. In the meantime, follow the instructions at: http://docs.ckan.org/en/latest/forms.htmlTo add example tag vocabulary data to the database, from the ckanext-example directory run:
paster example create-example-vocabs -c <path to your ckan config file>
This data can be removed with
paster example clean -c <path to your ckan config file>