Template váltása PHP-val

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!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
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

1
2
3
4
5
6
7
<?
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:

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

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

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

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

1
2
3
<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.

1
2
3
<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
  2. style2.css
  3. 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.zip

Forrás: scriptsinclude.com

9 HOZZÁSZÓLÁS

  1. 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. 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. 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. 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. 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. 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.

  7. 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

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

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét