mirror of
https://github.com/getgrav/grav.git
synced 2026-02-09 08:07:49 +01:00
Merge pull request #358 from Sommerregen/feature/better-theme-inheritance
Improved theme inheritance to support all kinds of streams
This commit is contained in:
@@ -221,20 +221,43 @@ class Themes extends Iterator
|
||||
throw new \InvalidArgumentException("Stream '{$type}' could not be initialized.");
|
||||
}
|
||||
}
|
||||
|
||||
// Load languages after streams has been properly initialized
|
||||
$this->loadLanguages($this->config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load theme configuration.
|
||||
*
|
||||
* @param string $name Theme name
|
||||
* @param Config $config Configuration class
|
||||
*/
|
||||
protected function loadConfiguration($name, Config $config)
|
||||
{
|
||||
$themeConfig = CompiledYamlFile::instance("themes://{$name}/{$name}" . YAML_EXT)->content();
|
||||
$config->joinDefaults("themes.{$name}", $themeConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load theme languages.
|
||||
*
|
||||
* @param Config $config Configuration class
|
||||
*/
|
||||
protected function loadLanguages(Config $config)
|
||||
{
|
||||
/** @var UniformResourceLocator $locator */
|
||||
$locator = $this->grav['locator'];
|
||||
|
||||
if ($config->get('system.languages.translations', true)) {
|
||||
$languageFiles = array_reverse($locator->findResources("theme://languages" . YAML_EXT));
|
||||
|
||||
if ($this->config->get('system.languages.translations', true)) {
|
||||
$languages = [];
|
||||
$schemes = array_reverse($config->get("themes.{$name}.streams.schemes.theme.prefixes.", []));
|
||||
foreach ($schemes as $scheme) {
|
||||
$languages = array_replace_recursive($languages, CompiledYamlFile::instance("$scheme/languages". YAML_EXT)->content());
|
||||
foreach ($languageFiles as $language) {
|
||||
$languages[] = CompiledYamlFile::instance($language)->content();
|
||||
}
|
||||
|
||||
if ($languages) {
|
||||
$languages = call_user_func_array('array_replace_recursive', $languages);
|
||||
$config->getLanguages()->mergeRecursive($languages);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user