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

Kapcsolódó bejegyzések:
  • Valid XHTML transitional doctype, Valid XHTML transitional sablon Az alábbi kódot amolyan segítség leginkább magamnak, hogy ne kelljen mindig megírnom az alapok …

  • Az “iframe”-eket a lapodon teljesen eltüntetheted ha a kód végére beilleszted a transparency=”true” értéket, valahogy így: kódAztán a “page.html” (v …

  • Létezik egy technika, amivel különböző felbontású eszközökre külön css stílusokat tudunk meghívni. Példa 1200 pixelnél kisebb és nagyobb méretekre:…

  • Ha olyasmi formázást szeretnél, melyek általában könyvekben lehet látni (tartalomjegyzék), akkor az alábbi kódot használd:tartalomjegyzék mintaol …

  • Honlapkészítés közben néha jól jön, ha az egyes böngészők különböző szabványértelmezése miatt egyes CSS részleteket, kódokat böngészőhöz kötve tudunk definiálni. …

A cikket beküldte: Harder (http://blog.harder.hu)

9 hozzászólás

  1. Jani says:

    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 says:

    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 says:

    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 says:

    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. gyuri says:

    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. gyuri says:

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

  7. Ben says:

    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 says:

    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 says:

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

Szólj hozzá
a Template váltása PHP-val c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>