Jak nie działa, gdy działa ?

Napisze jeszcze raz, prościej

1. tworzymy katalog
templates/
2. A w nim są pliki:
- pierwszy_gora.tpl
- pierwszy_dol.tpl
- drugi_gora.tpl
- drugi_dol.tpl
- w plikach
_gora jest to co PRZED {content}
- w plikach
_dol to co PO {content}
3. Dodajemy Znacznik Użytkownika o nazwie
zmienstyl
Code: Select all
echo '<__script__ type="text/javascript">function setCookie(cookieName,cookieValue,nDays) {
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0) nDays=1;
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue)
+ ";expires="+expire.toGMTString();
}</__script>';
echo '<a href="javascript:window.setCookie(\'szablon\',\'pierwszy\',10);window.location.reload();">szablon 1</a>
<a href="javascript:setCookie(\'szablon\',\'drugi\',10);window.location.reload();">szablon 2</a>';
Edytujemy go zależnie od nazw styli itd.
4. Nasz szablon w CMSie powinien wyglądać tak:
Code: Select all
{process_pagedata}{assign var="szablon" value=$smarty.cookies.szablon}
{capture name="gora"}templates/{$szablon}_gora.tpl{/capture}
{* Jeżeli nazwa szablonu z cookisa jest zła to ustawiamy domyślny *}
{if !file_exists($smarty.capture.gora) }
{assign var="szablon" value='pierwszy'}
{capture name="gora"}templates/{$szablon}_gora.tpl{/capture}
{/if}
{capture name="dol"}templates/{$szablon}_dol.tpl{/capture}
{assign var="f" value=$smarty.capture.gora}
{include file="../../$f"}
{content}
{assign var="f" value=$smarty.capture.dol}
{include file="../../$f"}
Uwagi końcowe:
- Właśnie pomyślałem, że nie trzeba używać _gora i _dol, wystarczy {content assign=..} ale już nie chce mi się tego aktualizować
- żeby wstawić parę {content block=...} trzeba się pogłowić, ale to jest jak najbardziej możliwe
- Nasz główny szablon musi się nazywać pierwszy_gora.tpl i pierwszy_dol.tpl. kolejne dowolnie, pod warunkiem, że odpowiednio zmienimy znacznik użytkownika
zmienstyl
- powinniśmy zastosować statyczne pliki CSS i pozbyć się znacznika {stylesheet}
- znacznik {zmienstyl} wstawiamy w każdym szablonie (np _gora)