Theme AddOn - Language Switcher
Benötigt das Theme Addon
Was macht es?
Eine kleine Funktion um die Sprachen im Frontend als stylebare Liste auszugeben.
Die Funktion
Lege eine Datei namens clang_switch.php
im Theme Addon im Ordner theme/private/inc/frontend
an.
Inhalt der Datei
<?php
/* ----- Language Switch -----
$showCurLang : true / false - if the current language shall be displayed
$wrappingList: true / false - adds wrapping ul with extra css if given
$countryCode : true / false - Shows Country Code as Name
$fallbackHome : true / false - Shows Language Homepage if article is not online
$css_extra : adds extra css classes
----- Language Switch ----- */
if(!function_exists("getLangNav"))
{
function getLangNav($showCurLang = true, $wrappingList = true, $countryCode = true, $fallbackHome = false, $css_extra = '')
{
$langOutput = '';
$langOutput .= ($wrappingList ? '<ul class="lang--nav '.$css_extra.'">' : '');
$langs = rex_clang::getAll();
if($showCurLang) {
$langOutput .= '<li class="lang--item lang--item__active lang--' . rex_clang::getCurrent()->getCode() . '">' . ($countryCode ? rex_clang::getCurrent()->getCode() : rex_clang::getCurrent()->getName()) . '</li>';
}
unset($langs[rex_clang::getCurrentId()]);
foreach($langs as $lang) {
if($lang->isOnline()) {
if(rex_article::getCurrent($lang->getId())->isOnline()) {
$langOutput .= '<li class="lang--item lang--item__inactive lang--'.$lang->getCode().'"><a title="'.$lang->getName().'" href="'.rex_getUrl('',$lang->getId()).'">'.($countryCode ? $lang->getCode() : $lang->getName()).'</a></li>';
} elseif ($fallbackHome == true && rex_article::getSiteStartArticle($lang->getId())->isOnline()) {
$langOutput .= '<li class="lang--item lang--item__inactive lang--'.$lang->getCode().'"><a title="'.$lang->getName().'" href="' . rex_article::getSiteStartArticle($lang->getId())->getUrl() . '">'.($countryCode ? $lang->getCode() : $lang->getName()).'</a></li>';
}
}
}
$langOutput .= ($wrappingList ? '</ul>' : '');
return $langOutput;
}
}
Einbinden in Theme
Anschließend wird die Datei clang_switch.php
in die functions.php
im Ordner theme/private/inc
ein.
z.B so:
<?php
if (!rex::isBackend()) {
// Frontend
include('frontend/clang_switch.php');
} else {
// Backend
//get REDAXO config file
$configFile = rex_path::coreData('config.yml');
$config = rex_file::getConfig($configFile);
if (isset($config['debug']) && $config['debug'] === true) {
// Optional Debug Module Function - Infos: https://github.com/FriendsOfREDAXO/tricks/blob/master/theme_debug_module.md
//include('backend/debug_module.php');
}
}
Ausgabe im Template
Jetzt kann die Ausgabe der Funktion an beliebiger Stelle im Template ausgegeben werden.
<?php
echo getLangNav(true, true, true, 'my--class');
Theme Debug Module
Eine kleine Funktion um die Inhalte der REX_VALUES auszugeben. Vor allem hilfreich beim Einsatz von MForm und MBlock. Zur Anleitung: Theme Debug Module