X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=doc%2Fthemes.md;h=15ac38fdf23bfea4d48052f680c789b883cbe620;hb=1c789d487b8e32e589fa07a1812644221d4a4915;hp=59f9570ddc162ff8ed37b28bbd8b29607b2f1894;hpb=c845415a99ebc348103815a7b2c55b15c75cdd24;p=friendica.git
diff --git a/doc/themes.md b/doc/themes.md
index 59f9570ddc..15ac38fdf2 100644
--- a/doc/themes.md
+++ b/doc/themes.md
@@ -3,8 +3,8 @@
* [Home](help)
To change the look of friendica you have to touch the themes.
-The current default theme is [Vier](https://github.com/friendica/friendica/tree/master/view/theme/vier) but there are numerous others.
-Have a look at [friendica-themes.com](http://friendica-themes.com) for an overview of the existing themes.
+The current default theme is [Vier](https://github.com/friendica/friendica/tree/stable/view/theme/vier) but there are numerous others.
+Have a look at [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes) for an overview of the existing themes.
In case none of them suits your needs, there are several ways to change a theme.
So, how to work on the UI of friendica.
@@ -17,7 +17,7 @@ The below for a more detailed description of theme heritage.
Some themes also allow users to select *variants* of the theme.
Those theme variants most often contain an additional [CSS](https://en.wikipedia.org/wiki/CSS) file to override some styling of the default theme values.
-From the themes in the main repository *duepunto zero* and *vier* are using this methods for variations.
+From the themes in the main repository *vier* and *vier* are using this methods for variations.
Quattro is using a slightly different approach.
Third you can start your theme from scratch.
@@ -60,144 +60,6 @@ they will be overwritten by files in
/view/theme/**your-theme-name**/js.
-## Expand an existing Theme
-
-### Theme Variations
-
-Many themes are more *theme families* than only one theme.
-*duepunto zero* and *vier* allow easily to add new theme variation.
-We will go through the process of creating a new variation for *duepunto zero*.
-The same (well almost, some names change) procedure applies to the *vier* theme.
-And similar steps are needed for *quattro* but this theme is using [lesscss](http://lesscss.org/#docs) to maintain the CSS files..
-
-In
-
- /view/theme/duepuntozero/deriv
-
-you find a couple of CSS files that define color derivations from the duepunto theme.
-These resemble some of the now as unsupported marked themes, that were inherited by the duepunto theme.
-Darkzero and Easter Bunny for example.
-
-The selection of the colorset is done in a combination of a template for a new form in the settings and aome functions in the theme.php file.
-The template (theme_settings.tpl)
-
- {{include file="field_select.tpl" field=$colorset}}
-
-
-
-
-defines a formular consisting of a [select](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select) pull-down which contains all aviable variants and s submit button.
-See the documentation about [SMARTY3 templates](/help/snarty3-templates.md) for a summary of friendica specific blocks other than the select element.
-But we don't really need to change anything at the template itself.
-
-The template alone wont work though.
-You make friendica aware of its existance and tell it how to use the template file, by defining a config.php file.
-It needs to define at least the following functions
-
-* theme_content
-* theme_post
-
-and may also define functions for the admin interface
-
-* theme_admin
-* theme_admin_post.
-
-theme_content and theme_admin are used to make the form available in the settings, repectively the admin panel.
-The _post functions handle the processing of the send form, in this case they save to selected variand in friendicas database.
-
-To make your own variation appear in the menu, all you need to do is to create a new CSS file in the deriv directoy and include it in the array in the config.php:
-
- $colorset = array(
- 'default'=>L10n::t('default'),
- 'greenzero'=>L10n::t('greenzero'),
- 'purplezero'=>L10n::t('purplezero'),
- 'easterbunny'=>L10n::t('easterbunny'),
- 'darkzero'=>L10n::t('darkzero'),
- 'comix'=>L10n::t('comix'),
- 'slackr'=>L10n::t('slackr'),
- );
-
-the 1st part of the line is the name of the CSS file (without the .css) the 2nd part is the common name of the variant.
-Calling the L10n::t() function with the common name makes the string translateable.
-The selected 1st part will be saved in the database by the theme_post function.
-
- function theme_post(App $a){
- // non local users shall not pass
- if (! local_user()) {
- return;
- }
- // if the one specific submit button was pressed then proceed
- if (isset($_POST['duepuntozero-settings-submit'])){
- // and save the selection key into the personal config of the user
- PConfig::set(local_user(), 'duepuntozero', 'colorset', $_POST['duepuntozero_colorset']);
- }
- }
-
-Now that this information is set in the database, what should friendica do with it?
-For this, have a look at the theme.php file of the *duepunto zero*.
-There you'll find somethink alike
-
- $colorset = PConfig::get( local_user(), 'duepuntozero','colorset');
- if (!$colorset)
- $colorset = Config::get('duepuntozero', 'colorset');
- if ($colorset) {
- if ($colorset == 'greenzero')
- $a->page['htmlhead'] .= ''."\n";
- /* some more variants */
- }
-
-which tells friendica to get the personal config of a user.
-Check if it is set and if not look for the global config.
-And finally if a config for the colorset was found, apply it by adding a link to the CSS file into the HTML header of the page.
-So you'll just need to add a if selection, fitting your variant keyword and link to the CSS file of it.
-
-Done.
-Now you can use the variant on your system.
-But remember once the theme.php or the config.php you have to readd your variant to them.
-If you think your color variation could be benifical for other friendica users as well, feel free to generate a pull request at github so we can include your work into the repository.
-
-### Inheritation
-
-Say, you like the duepuntozero but you want to have the content of the outer columns left and right exchanged.
-That would be not a color variation as shown above.
-Instead we will create a new theme, duepuntozero_lr, inherit the properties of duepuntozero and make small changes to the underlying php files.
-
-So create a directory called duepunto_lr and create a file called theme.php with your favorite text editor.
-The content of this file should be something like
-
- theme_info = array(
- 'extends' => 'duepuntozero'.
- );
- $a->set_template_engine('smarty3');
- /* and more stuff e.g. the JavaScript function for the header */
- }
-
-Next take the default.php file found in the /view direcotry and exchange the aside and right_aside elements.
-So the central part of the file now looks like this:
-
-
-
-
-
-
-
-
-
-
-
-Finally we need a style.css file, inheriting the definitions from the parent theme and containing out changes for the new theme.
-***Note***:You need to create the style.css and at lest import the base CSS file from the parent theme.
-
- @import url('../duepuntozero/style.css');
-
-Done.
-But I agree it is not really useful at this state.
-Nevertheless, to use it, you just need to activate in the admin panel.
-That done, you can select it in the settings like any other activated theme.
-
## Creating a Theme from Scratch
Keep patient.
@@ -230,15 +92,19 @@ Supported formats are PNG and JPEG.
This is the main definition file of the theme.
In the header of that file, some meta information is stored.
-For example, have a look at the theme.php of the *quattro* theme:
+For example, have a look at the theme.php of the *vier* theme:
- * Maintainer: Fabio
- * Maintainer: Tobias
+ * Author: Ike
+ * Author: Beanow
+ * Maintainer: Ike
+ * Description: "Vier" is a very compact and modern theme. It uses the font awesome font library: http://fortawesome.github.com/Font-Awesome/
*/
You see the definition of the theme's name, it's version and the initial author of the theme.
@@ -246,13 +112,19 @@ These three pieces of information should be listed.
If the original author is no longer working on the theme, but a maintainer has taken over, the maintainer should be listed as well.
The information from the theme header will be displayed in the admin panel.
+The first thing in file is to import the `App` class from `\Friendica\` namespace.
+
+ use Friendica\App;
+
+This will make our job a little easier, as we don't have to specify the full name every time we need to use the `App` class.
+
The next crucial part of the theme.php file is a definition of an init function.
The name of the function is _init.
-So in the case of quattro it is
+So in the case of vier it is
- function quattro_init(App $a) {
- $a->theme_info = array();
- $a->set_template_engine('smarty3');
+ function vier_init(App $a) {
+ $a->theme_info = array();
+ $a->set_template_engine('smarty3');
}
Here we have set the basic theme information, in this case they are empty.
@@ -262,22 +134,13 @@ At the moment you should use the *smarty3* engine.
There once was a friendica specific templating engine as well but that is not used anymore.
If you like to use another templating engine, please implement it.
-When you want to inherit stuff from another theme you have to *announce* this in the theme_info:
-
- $a->theme_info = array(
- 'extends' => 'duepuntozero',
- );
-
-which declares *duepuntozero* as parent of the theme.
-
If you want to add something to the HTML header of the theme, one way to do so is by adding it to the theme.php file.
To do so, add something alike
- $a->page['htmlhead'] .= <<< EOT
+ DI::page()['htmlhead'] .= <<< EOT
/* stuff you want to add to the header */
EOT;
-The $a variable holds the friendica application.
So you can access the properties of this friendica session from the theme.php file as well.
### default.php