A PHP segítségével könnyen megoldható, hogy egy lapon váltogatni lehessen a stílusok és template-k között (attól is függ hogy a CSS-ben csak a formázásra vonatkozó részeket tartjuk, vagy mondjuk CSS segítségével építettük fel az egész lapszerkezetet), erre találsz az itt következő leírásban egy lehetséges megoldást. Hozz létre egy setup.php fájlt, melynek a tartalma az alábbi legyen!

<?
session_start();

if ( ! session_is_registered("style") )
{
session_register("style");
$_SESSION['style'] = "style1"; // set default stylesheet to use

$user_style = $_SESSION['style'];
}
else
{
$user_style = $_SESSION['style'];
}
?>

Hozz létre egy új lapot style_setup.php néven, a tartalma pedig legyen

<?
session_start();

$_SESSION['style'] = $_GET['style'];

header("Location: ".$_SERVER['HTTP_REFERER'] );
?>

Hozz létre egy új lapot bármilyen néven (mondjuk legyen p.php)!

A doctype előtt pedig szúrd be az a részt:

<? require"./setup.php"; ?>

Még mindig a p.php fájlba illeszd be

<link href="<? echo $user_style ?>.css" rel="StyleSheet" type="text/css">

kódot a és tag-ek közé

<head>
<link href="<? echo $user_style ?>.css" rel="StyleSheet" type="text/css">
</head>

Az a kódrészlet a szokásos link rel Stylesheet részlet helyett van a kódban. A lépések vége fele közeledve már csak annyit dolgod maradt, hogy a lap (p.php) body részébe tegyél be selectort, amire kattintva váltani lehet majd a template-t.

<a href="style_setup.php?style=style1">Style 1</a> |
<a href="style_setup.php?style=style2">Style 2</a> |
<a href="style_setup.php?style=style3">Style 3</a>

Utolsó lépésként pedig készítsd el a CSS-eket, amik a template-eket fogja tartalmazni. Nevezd el őket így: 1. style1.css

  1. style2.css
  2. style3.css

A script letöltése

A template cserén kívül a fenti megoldás felhasználható pl. a nyelvek cseréjéhez is - lang_en.php

  • lang_fr.php
  • lang_ge.php

A tutorialban lévő mintafájlokat tartalmazó csomag letöltése: cs.zipForrás: scriptsinclude.com

Harder

Harder

Profil

Korábbi hozzászólások (9)

A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.

  1. Jani

    Helló,
    Régóta keresek valami tutoriált, ahol megtudhatom, hogy miként lehet úgy megcsinálni egy template-t, hogy a lapszerkezetet is CSS-sel csinálom meg... CSS-sel tudok formázni, sőt kell is, de hogy építem fel vele az oldalt?

    Vagy van már ilyen tutoriál, csak én nem találom?

    (olyat szeretnék csinálni mint a joomla-nak van, hogy a template fájlok átírásával tudom módosítani az oldal teljes elrendezését is, nem kell hozzá módosítanom mindent... )

  2. bubu001

    A fenti példa tökéletes erre. megcsinálod az alap html fájlt (php) és csinálsz hozzá a design tervből css-eket.
    De úgy érzem ennél több kérdésed van... Ha tudsz css alapú designt csinálni, akkor elvileg a fentiek már egyértelműek kellenek hogy legyenek, mégha a php-hoz nem is értesz.

  3. Jani

    Igen, de ez a fenti példa csak a css-t változtatja meg, nem... azaz, hogy melyiket töltse be az oldal, az pedig nem adja meg a modulok elhelyezkedését... ?

    És nekem az a gondom, hogy nem tudom megoldani azt, hogy ha "A" designben a baloldalon van egy menü, akkor "B" designben alul van a menü és ehhez csak a template fájlt keljen módosítani, ne pedig újraírni az egészet...

  4. Ben

    a CSS-ben kell meghatároznod hogy az a modul hol legyen, és akkor CSS váltáskor a modul is annak megfelelően változik.

  5. gyuriwww.fozolabor.hu/oldal.izso?

    Sziasztok!
    Bár cirka két éve nem nyultam az oldalhoz de most szeretném fejleszteni tovább mert most felraktam egy saját tárhelyre.
    Régóta szeretném megoldani azt hogy ha mysql- táblámba van a css-nek az elérési linkje akkor azt hogy tudom megjeleníteni mondjuk az index.php-ban?
    Előre is köszönöm a válaszokat ha tud valaki ebben segíteni.

  6. gyuriwww.fozolabor.hu/oldal.izso?

    Ja és nem lehet letölteni az zip-et nem található pedig jó lenne.

  7. Ben

    ez egy 5 éves cikk, a letöltés nem müködik már.
    nem tudom, miért kell mysql-ben tárolni a css linkjét, de itt is csak annyi a változás a példához képest, hogy a session array helyett a mysql lekérést illeszted be értékként.

  8. gyuri

    Köszi a választ már meg is oldottam!
    De viszont tényleg igazad van nincs értelme mysql-be tárolni.Csak gondoltam hogy véd a css lementéstől de semmi nem javult hogy ezt megcsináltam

  9. Ben

    Miért védene. Ugyanúgy betölti az oldalra azt is, hiszen enélkül a Html sem használhatná.

Van hozzáfűznivalód? Írj nekem közvetlenül.

Kapcsolat