Movable Type: server-side style switcher

Okrem známeho prepínača štýlov (zmena vzhľadu a layoutu stránky z predpripravenej sady) prostredníctvom client-side riešenia (publikovaného v Alarte), je k dispozícií tutorial implementujúci v Movable Type zmenu vzhľadu stránky kombináciou cookie a PHP skriptu.
Príncíp je všeobecne známy: klientský prehliadač odošle webovému serveru, na ktorom beží stránka kód zvoleného štýlu. V kóde stránky je namiesto klasického odkazu na vkladaný súbor CSS adresa PHP skriptu, ktorý sa postará o načítanie hodnoty z cookie a podľa toho „pošle“ prehliadaču príslušné CSS. PHP skript, teda odtieni klientovi celú sadu CSS (v client-side riešení je vždy uvedená v kóde stránky ako alternative stylesheet) a prezentuje mu len jedinú.
Nie je možné vyhlásiť či je server-side lepšie ako client-side. Každé má iné nároky a kým client-side realizujete aj na hostingu bez akejkoľvek podpory PERLu či PHP, u server-side riešenia už mu musíte omnoho viacej vládnuť.
Detailný popis riešenia na MovableStyle.


Stručný slovenský preklad
Riešenie vyžaduje podporu PHP na strane servera, na ktorom prevádzkujete Movable Type.
V adresári do ktorého MT generuje súbory stránky sú takéto adresáre:
archives – jednotlivé príspevky
inc – PHP skripty (prepínač)
styles – sada CSS súborov, pričom každá sada má svoj adresár a v ňom CSS súbor s názvom styles-site.css. Zároveň je k dispozícií zbalená celá sada do súboru styles-site.ZIP.
Do súboru .htaccess v každom adresári so sadou CSS je vložené toto:
php_value include_path [Movable Style base directory]/inc
php_value auto_prepend_file „prepend.php“
Zdrojový kód prepínača ako súbor prepend.php je k dispozícií na MovableStyle viď. PHP Source Code.
V šablónach Movable Type (index, entry page a ďalšie) je nutné urobiť niekoľko zmien. Pôvodná prípona generovaných súborov je .html a je nutné u všetkých ju zmeniť na .php aby boli všetky súbory spracované interpreterom PHP.
V hlavičke generovaných súborov (teda ich šablónach) sa zmení vkladanie stylesheet takto:
<link rel=“stylesheet“ href=“<$MTBlogURL$>styles/<?=get_style()?>/styles-site.css“
title=“<?=get_style_title()?>“ type=“text/css“ />
Na vhodné miesto v kóde šablóny, kde chcete mať prepínač (nie je nutný všade, môžete si spraviť „servisnú“ stránku s nastaveniami) vložte kód:
<div>Select a stylesheet to change to.</div>
<form action=“index.php“ method=“get“>
<select name=“style“ onchange=“this.form.submit()“>
<?= list_style() ?>
</select>
</form>
Pretože komentáre, trackback a vyhľadávanie je generované dynamicky strojom Movable Type, nie je možné ich kód „prepláchnuť“ cez PHP. Preto použite plugin, ktorý nakopírujte medzi ostatné pluginy Movable Type ako súbor MovableStyle.pl:
use strict;
use MT::Template::Context;
use CGI::Cookie;
MT::Template::Context->add_tag(MovableStyle =>
sub {
my %cookies = fetch CGI::Cookie;
if ($cookies{‘style’}) {
return $cookies{‘style’}->value;
} else {
return ‘MovableType_Clean’;
}
}
);
Šablóny dynamicky generovaných stránok upravte v hlavičke takto:
<link rel=“stylesheet“ href=“<$MTBlogURL$>styles/<$MTMovableStyle$>/styles-site.css“
type=“text/css“ />

Written by rony