Sahana Eden supports custom Pages as part of it's overall Templates system.
This allows customisation of:
- Home page
- Totally new pages
Custom pages are defined within the templates folder to reduce issues with merging.
The web server is normally configured to redirect requests to:
Which maps to
controllers/default.py & the
index() function therein.
The default application & controller can be easily edited in
web2py/routes.py or within the web server configuration, however editing the default function might cause problems for other Sahana modules.
Sahana Eden is designed to check for the presence of a custom template and, if one is configured, then it attempts to load:
& then run the
index() function inside there instead.
- You must have an
__init__.pyin your template folder for this to work (it can be empty).
- Unlike normal controllers, the scope this function is run in will start empty, so import what you need
- If a custom View template is passed in from the Template folder then this will need to be provided as a File not a String to work in compiled mode:
from os import path from gluon import current response = current.response view = path.join(current.request.folder, "modules", "templates", response.s3.theme, "views", "index.html") try: # Pass view as file not str to work in compiled mode response.view = open(view, "rb") except IOError: from gluon.http import HTTP raise HTTP("404", "Unable to open Custom View: %s" % view)
If a URL is specified like:
The this alternate page will attempt to be loaded using the
custompage() class in: