8
0
Fork 0

Allow to create a `style.css` file in the documentation to override some styles. #180

Dieser Commit ist enthalten in:
Stéphane Goetz 2020-04-25 22:32:43 +02:00
Ursprung 4d312a44e6
Commit db772b6a5e
3 geänderte Dateien mit 24 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -2,6 +2,11 @@ In its simplest form, a theme is an empty folder with a `config.json` file conta
After that, every setting is optional, but you can override everything if you'd like to. After that, every setting is optional, but you can override everything if you'd like to.
> **Overriding styles**
>
> If you want to tweak a few styles, you can create a `style.css` file at the root of your documentation
> directory and it will be included automatically. By doing this, you don't need to create a new theme.
## `config.json` options ## `config.json` options
Here is an example `config.json` file : Here is an example `config.json` file :

Datei anzeigen

@ -32,11 +32,18 @@ class DauxHelper
*/ */
protected static function getTheme(Config $config, $current_url) protected static function getTheme(Config $config, $current_url)
{ {
static $cache = [];
$htmlTheme = $config->getHTML()->getTheme(); $htmlTheme = $config->getHTML()->getTheme();
$theme_folder = $config->getThemesPath() . DIRECTORY_SEPARATOR . $htmlTheme; $theme_folder = $config->getThemesPath() . DIRECTORY_SEPARATOR . $htmlTheme;
$theme_url = $config->getBaseUrl() . 'themes/' . $htmlTheme . '/'; $theme_url = $config->getBaseUrl() . 'themes/' . $htmlTheme . '/';
$cache_key = "$current_url-$htmlTheme";
if (array_key_exists($cache_key, $cache)) {
return $cache[$cache_key];
}
$theme = []; $theme = [];
if (is_file($theme_folder . DIRECTORY_SEPARATOR . 'config.json')) { if (is_file($theme_folder . DIRECTORY_SEPARATOR . 'config.json')) {
$theme = json_decode(file_get_contents($theme_folder . DIRECTORY_SEPARATOR . 'config.json'), true); $theme = json_decode(file_get_contents($theme_folder . DIRECTORY_SEPARATOR . 'config.json'), true);
@ -45,7 +52,7 @@ class DauxHelper
} }
} }
//Default parameters for theme // Default parameters for theme
$theme += [ $theme += [
'name' => $htmlTheme, 'name' => $htmlTheme,
'css' => [], 'css' => [],
@ -54,6 +61,7 @@ class DauxHelper
'favicon' => '<base_url>themes/daux/img/favicon.png', 'favicon' => '<base_url>themes/daux/img/favicon.png',
'templates' => $theme_folder . DIRECTORY_SEPARATOR . 'templates', 'templates' => $theme_folder . DIRECTORY_SEPARATOR . 'templates',
'variants' => [], 'variants' => [],
'with_search' => $config->getHTML()->hasSearch()
]; ];
if ($config->getHTML()->hasThemeVariant()) { if ($config->getHTML()->hasThemeVariant()) {
@ -77,6 +85,14 @@ class DauxHelper
} }
} }
if ($theme['with_search']) {
$theme['css'][] = '<base_url>daux_libraries/search.css';
}
if (is_file($config->getDocumentationDirectory() . DIRECTORY_SEPARATOR . 'style.css')) {
$theme['css'][]= '<base_url>style.css';
}
$substitutions = [ $substitutions = [
'<local_base>' => $config->getLocalBase(), '<local_base>' => $config->getLocalBase(),
'<base_url>' => $current_url, '<base_url>' => $current_url,
@ -93,6 +109,8 @@ class DauxHelper
} }
} }
$cache[$cache_key] = $theme;
return $theme; return $theme;
} }

Datei anzeigen

@ -48,11 +48,6 @@
<?php foreach ($config->getTheme()->getCSS() as $css) { ?> <?php foreach ($config->getTheme()->getCSS() as $css) { ?>
<link href='<?= $css; ?>' rel='stylesheet' type='text/css'> <link href='<?= $css; ?>' rel='stylesheet' type='text/css'>
<?php } ?> <?php } ?>
<?php if ($config->getHTML()->hasSearch()) { ?>
<!-- Search -->
<link href="<?= $base_url; ?>daux_libraries/search.css" rel="stylesheet">
<?php } ?>
</head> </head>
<body class="<?= $this->section('classes'); ?>"> <body class="<?= $this->section('classes'); ?>">
<?= $this->section('content'); ?> <?= $this->section('content'); ?>