Added the possibility for themes to override core module functions

This commit is contained in:
Andrej Stieben 2016-02-04 21:45:21 +01:00
parent acefb84681
commit 48e6ff21aa
2 changed files with 24 additions and 3 deletions

View file

@ -59,7 +59,19 @@ The same rule applies to the JavaScript files found in
they will be overwritten by files in they will be overwritten by files in
/view/theme/**your-theme-name**/js. /view/theme/**your-theme-name**/js
### Modules
You have the freedom to override core modules found in
/mod
They will be overwritten by files in
/view/theme/**your-theme-name**/mod
Be aware that you can break things easily here if you don't know what you do. Also notice that you can override parts of the module functions not defined in your theme module will be loaded from the core module.
## Expand an existing Theme ## Expand an existing Theme
@ -288,4 +300,4 @@ The default file is in
/view/default.php /view/default.php
if you want to change it, say adding a 4th column for banners of your favourite FLOSS projects, place a new default.php file in your theme directory. if you want to change it, say adding a 4th column for banners of your favourite FLOSS projects, place a new default.php file in your theme directory.
As with the theme.php file, you can use the properties of the $a variable with holds the friendica application to decide what content is displayed. As with the theme.php file, you can use the properties of the $a variable with holds the friendica application to decide what content is displayed.

View file

@ -233,7 +233,16 @@ if(strlen($a->module)) {
} }
/** /**
* If not, next look for a 'standard' program module in the 'mod' directory * If not, next look for module overrides by the theme
*/
if((! $a->module_loaded) && (file_exists("view/theme/" . current_theme() . "/mod/{$a->module}.php"))) {
include_once("view/theme/" . current_theme() . "/mod/{$a->module}.php");
// We will not set module_loaded to true to allow for partial overrides.
}
/**
* Finally, look for a 'standard' program module in the 'mod' directory
*/ */
if((! $a->module_loaded) && (file_exists("mod/{$a->module}.php"))) { if((! $a->module_loaded) && (file_exists("mod/{$a->module}.php"))) {