Browse Source

Added the possibility for themes to override core module functions

pull/2319/head
Andrej Stieben 5 years ago
parent
commit
48e6ff21aa
2 changed files with 24 additions and 3 deletions
  1. +14
    -2
      doc/themes.md
  2. +10
    -1
      index.php

+ 14
- 2
doc/themes.md View File

@ -59,7 +59,19 @@ The same rule applies to the JavaScript files found 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
@ -288,4 +300,4 @@ The default file is in
/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.
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.

+ 10
- 1
index.php 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"))) {


Loading…
Cancel
Save