Difference between revisions of "Customization"
From PhotoVoltaic Logger new generation
m (→vzlogger compatibility) |
m (→Templates) |
||
Line 4: | Line 4: | ||
The web frontend templates resides at <tt>frontend/View</tt> | The web frontend templates resides at <tt>frontend/View</tt> | ||
− | The internal search logic for the to be used template is this (assume this requested template: <tt>default. | + | The internal search logic for the to be used template is this (assume this requested template: <tt>default.header.tpl</tt>) |
Search these directories | Search these directories | ||
Line 11: | Line 11: | ||
* <tt>frontend/View/custom</tt> | * <tt>frontend/View/custom</tt> | ||
* <tt>frontend/View</tt> | * <tt>frontend/View</tt> | ||
− | Found template here: <tt>frontend/View/default. | + | Found template here: <tt>frontend/View/default.header.tpl</tt> |
The <tt>{module}</tt> stands here for the actual [[:Category:Web_frontend|web frontend]] module (can be found in the URL in your browser). (Therefor it would be possible to have e.g. an own footer for each module, if you like :-) | The <tt>{module}</tt> stands here for the actual [[:Category:Web_frontend|web frontend]] module (can be found in the URL in your browser). (Therefor it would be possible to have e.g. an own footer for each module, if you like :-) |
Revision as of 13:18, 13 April 2014
Templates
The web frontend templates resides at frontend/View
The internal search logic for the to be used template is this (assume this requested template: default.header.tpl)
Search these directories
- frontend/View/{module}/custom
- frontend/View/{module}
- frontend/View/custom
- frontend/View
Found template here: frontend/View/default.header.tpl
The {module} stands here for the actual web frontend module (can be found in the URL in your browser). (Therefor it would be possible to have e.g. an own footer for each module, if you like :-)
The custom sub directories are not delivered with Git repository, you have to create them if required. These directories will be ignored on update, they are excluded via .gitignore
Predefined output hooks
To inject your own code (JS/CSS/HTML) into the output, 3 hooks are available by default (from v2.9.0)
- frontend/View/hook.head.tpl - Injected just before </head> tag
- frontend/View/hook.body.before.tpl - Injected just after <body> tag
- frontend/View/hook.content.before.tpl - Injected between header & menu and page content
- frontend/View/hook.content.after.tpl - Injected between page content and footer
- frontend/View/hook.body.after.tpl - Injected just before </body> tag
To enable such a hook, the logic is the same as for other templates
# test -d frontend/View/custom || mkdir -p frontend/View/custom # cp frontend/View/hook.head.tpl frontend/View/custom/hook.head.tpl
Adjust now the file contents in custom directory
Coding
Prepend/append code
- If an file prepend.php exists, it will be included before any other PHP instructions.
- If an file append.php exists, it will be included after all other PHP instructions.
This works for the web frontend and for API (from r3), see prepend.php.dist and api/r3/prepend.php.dist for reference. (I use this for defining the application name for NewRelic monitoring.)
Custom API routes
For API since r3 you can define your own routes in route.custom.php.
The API is based on the Slim framework.
See route.custom.php.dist for reference and refer to the other route definitions in route.*.php for middleware helper functions and help.
vzlogger compatibility
PVLng can direct act as middleware for volkszaehler.org vzlogger.
Original vzlogger request is
POST http://demo.volkszaehler.org/middleware.php/data/550e8400-e29b-11d4-a716-446655441352.json?ts=1284677961150&value=12
as described in vzlogger API reference. So just change your vzlogger configurations from
... "middleware" : "http://localhost/middleware.php", ...
to
"middleware" : "http://localhost/api/r3",
The coding is prepared in routes.custom.php.dist, copy to routes.custom.php and uncomment the relevant coding:
$api->post( ...
Please keep in mind, that there will be by design NO security against unwanted postings like PVLng implements with the API key concept!