Příručka:$wgConf
| Globální objekty: $wgConf | |
|---|---|
| Vytvoří objekt konfigurace webu. Ve výchozí instalaci se příliš nepoužívá. |
|
| Zavedeno od verze: | 1.5.0 (r9670) |
| Odstraněno od verze: | stále se používá |
| Povolené hodnoty: | Blíže neurčeno |
| Výchozí hodnota: | nový SiteConfiguration objekt. |
| Další nastavení: Podle abecedy | Podle funkce | |
Podrobnosti
Vytvoří objekt konfigurace webu. Ve výchozí instalaci se příliš nepoužívá.
Toto se používá při hromadné instalaci Wikimedie k poskytnutí centralizovaného konfiguračního souboru pro několik stovek wiki, poskytujících výchozí hodnoty pro skupinu stránek a přepisy pro wiki.
Aktuálně je potřeba Rozšíření:CentralAuth k načtení informací o jednotlivých stránkách, např. odkazování na správné uživatelské stránky na každé wiki.
Konfigurace
Wiki jsou seskupeny podle přípony na názvech jejich databází. Na velké instalaci může být např. 'enwiki' a 'enwiktionary' a 'enwikibooks', každá v jiné skupině přípon. Chcete-li použít $wgConf->siteFromDB(), musí být přípony deklarovány v členské proměnné suffixes $wgConf.
$wgConf->settings je pole nastavení. Jeho formát je $wgConf->settings['wgSettingName']['wiki'].
Nastavení lze přiřadit (od specifičtějšího po méně konkrétní, toto je část 'wiki' $wgConf->settings, jak je uvedeno výše):
- konkrétní název DB.
- značka wiki (od 1.12.0)
- přípona (např. 'wiki' nebo 'wikislovník'), která ovlivní všechny v této skupině přípon (lze určit pomocí
$wgConf->siteFromDB()) - 'výchozí' ovlivní všechny wikiny
Pro nastavení řetězce můžete definovat parametry, které budou nahrazeny při extrahování nastavení.
Může být užitečné, když má nastavení stejný formát pro všechny wikiny.
Formát je $Jméno.
Dejte pozor, abyste používali jednoduché uvozovky (') nebo kód $ (\$), jinak bude nahrazen proměnnou PHP (tj. nelze v té době definovat).
Funkce zpětného volání (Callback)
Od 1.14 byl zaveden callback, aby bylo možné upravit parametry předané SiteConfiguration::get() a související funkci.
Může být použit ke změně parametrů, když jsou takové funkce volány přes LocalSettings.php (to je případ CentralAuth).
Můžete to definovat v $wgConf->siteParamsCallback.
Funkce zpětného volání obdrží objekt SiteConfiguration v prvním argumentu a název wiki ve druhém.
Musí vrátit pole s následujícími klíči (vše volitelné):
suffix: přípona webu (odpovídá $suffix paramaterSiteConfiguration::get()a podobně)jazyk: jazyk webutags: pole wiki tagů (odpovídající parametru $wikiTags)params: pole parametrů, které mají být nahrazeny (odpovídající parametru $params)
Budou sloučeny s parametry předanými do SiteConfiguration::get() a podobnými funkcemi. Pokud jsou vyplněny suffix a lang, použijí se k přepsání výchozího chování $wgConf->siteFromDB().
Sloučení nastavení
Pole lze nyní sloučit. To může být užitečné pro $wgGroupPermissions. Chcete-li jej použít, musíte před klávesy přidat "+" pro nastavení, která chcete sloučit.
- Chcete-li sloučit svou přizpůsobenou verzi nastavení s verzí v DefaultSettings.php, přidejte před název nastavení
+(např.'+wgGroupPermissions') - Chcete-li sloučit specifičtější úroveň s méně konkrétní, přidejte před úroveň
+.
Obě možnosti lze použít společně.
Sloučení probíhá v následujícím pořadí:
- Jméno databáze
- Značky (v pořadí poskytnutém metodě extrakce, která může být v tomto okamžiku velmi dobře náhodná)
- Přípona wiki
- Výchozí
Když je nalezen klíč, který nemá předponu "+", sloučení se ukončí.
Příklad s $wgGroupPermissions:
$wgConf->settings = [
# ...
# '+' spouští sloučení s tímto a hodnotou $wgGroupPermissions definovanou v DefaultSettings.php
'+wgGroupPermissions' => [
# Umožnit byrokratům měnit status na vzdálených wikinách a anonymním uživatelům vytvářet stránky
# (tato část nebude sloučena s 'default', protože před 'centralwiki' není žádná "+")
'centralwiki' => [
'bureaucrat' => [
'userrights-interwiki' => true,
],
],
# Wiki s právem vrácení zpět uděleným přihlášeným uživatelům, část 'default' bude sloučena s touto hodnotou.
# (tj. anonymní uživatelé nebudou moci vytvářet stránky)
'+somewiki' => [
'user' => [
'rollback' => true,
],
],
# Zakázat anonymním uživatelům vytvářet stránky.
# Poznámka: Před klíčem 'default' by nikdy nemělo být "+".
'default' => [
'*' => [
'createpage' => false,
'createtalk' => false,
],
],
],
# ...
];
Základní syntaxe je tedy:
$wgConf->settings = [
'wgConfigurationSetting' => [
'default' => 'defaultvalue',
'wikidatabasename1' => 'hodnota, která pro tuto wiki přepíše výchozí hodnotu',
],
# Chcete-li sloučit nastavení, která jste zde nastavili, s nastaveními v DefaultSettings.php:
'+wgConfigurationSetting' => [
# Poznámka: Toto a DefaultSettings.php NENÍ totéž!
# Výchozí nastavení uvedené zde přepíše nastavení v DefaultSettings.php a stane se novým výchozím nastavením pro všechny vaše wikiny, pokud se ho nerozhodnete přepsat pro konkrétní wiki, například zde pro wikidatabasename1.
'default' => 'defaultvalue',
'wikidatabasename1' => 'hodnota, která pro tuto wiki přepíše výchozí hodnotu',
],
];
Příklad
Tento příklad používá 3 wiki: dewiki, enwiki a frwiki. Jsou umístěny na adrese http://localhost/$wgDBname/ (tj. http://localhost/dewiki/, http://localhost/enwiki/ a http://localhost/frwiki/).
Předpokládá, že $wgDBname je již definován.
$wgConf->settings deklarován v InitialiseSettings.php, není to povinné a lze to provést v LocalSettings.php.InitialiseSettings.php
<?php
$wgConf->settings = [
'wgServer' => [
# Pokud chcete povolit použití https, použijte '//localhost' a nastavte 'http://localhost' na 'wgCanonicalServer'.
'default' => 'http://localhost',
],
'wgCanonicalServer' => [
'default' => 'http://localhost',
],
'wgScriptPath' => [
'default' => '/$wiki',
],
'wgArticlePath' => [
'default' => '/$wiki/index.php/$1',
],
'wgSitename' => [
'default' => 'Wikipedia',
'frwiki' => 'Wikipédia', # s přízvukem ve francouzštině
],
'wgLanguageCode' => [
'default' => '$lang',
],
'wgLocalInterwiki' => [
'default' => '$lang',
],
];
LocalSettings.php
$wgLocalDatabases = [
'dewiki',
'enwiki',
'frwiki',
];
$wgConf->wikis = $wgLocalDatabases;
$wgConf->suffixes = [ 'wiki' ];
$wgConf->localVHosts = [ 'localhost' ];
require_once "$IP/InitialiseSettings.php";
function efGetSiteParams( $conf, $wiki ) {
$site = null;
$lang = null;
foreach( $conf->suffixes as $suffix ) {
if ( substr( $wiki, -strlen( $suffix ) ) === $suffix ) {
$site = $suffix;
$lang = substr( $wiki, 0, -strlen( $suffix ) );
break;
}
}
return [
'suffix' => $site,
'lang' => $lang,
'params' => [
'lang' => $lang,
'site' => $site,
'wiki' => $wiki,
],
'tags' => [],
];
}
$wgConf->suffixes = $wgLocalDatabases;
$wgConf->siteParamsCallback = 'efGetSiteParams';
$wgConf->extractAllGlobals( $wgDBname );
Konfigurace Wikimedie
Chcete-li vidět, jak Wikimedie používá $wgConf ke konfiguraci svých wiki, podívejte se na:
- CommonSettings.php (verze
LocalSettings.phpod Wikimedie) - InitialiseSettings.php (pro
$wgConf->settings)
Související odkazy
- Soubor SiteConfiguration.php, který poskytuje návod, jak funguje $wgConf, a který by mohl být srozumitelnější než tato stránka.