Autor Zpráva
PHP_Nemaster
Profil
Dobrý den,
dělám redakční systém, ale nevím, jak vyřešit, aby si uživatel mohl nastavovat v nastaveních např. šířku menu, barvu pozadí, písmo apod. na své stránce.
Pokud znáte, chtěl bych udělat něco jako má blog.cz. Tam pravděpodobně uživatel upraví např. šířku menu, a podle toho PHP upraví CSS soubor.

Ale jak to udělat?
CSS má syntaxi: parametr: hodnota, jak nastavit pomocí třeba zapisování do souboru konkrétní hodnotu na konkrétním řádku?

Předem děkuji za odpověd'
BuGeR
Profil
Buď přes interní styl, kde si ty barvy vypíšeš do <style> přímo na stránce, nebo si udělej php soubor, hlavičku (header) nastav na content-type: text/css a do něho vlož ty styly, které můžeš například čerpat z databáze.
Výstup se bude chovat jako klasický css soubor, akorát bude mít příponu .php, pokud budeš chtít příponu .css tak použij mod_rewrite
Chro
Profil
PHP_Nemaster:
Lze to udělat v zásadě dvěma způsoby.
1. Každý uživatel získa defaultní CSS soubor. Ten si bude moct celý editovat (kód) ve formuláři a uložit.
2. Vývoj průvodce nastavení ve smyslu "tady zatrhni, z tohohle vyber, tamhle odklepni". Z dat posléze vytvořit nový CSS soubor a uložit.
Str4wberry
Profil
Musíš na to jít jinak.

1) Uživatel bude mít nějaký formulář, kam zadá „šířku menu, barvu pozadí, písmo apod.“ a ty mu z toho vygeneruješ CSS typu:
$cssText = "menu {width: " . $zadanaSirka . "; color: " . $zadanaBarva . "}";
$cssText.= "body {background: " . $zadanePozadi . "}";

2) Nebo třeba uživateli uložíš do databáze jednotlivé styly a v PHP souboru (jak píše BuGeR) je z ní vybereš, sestavíš z nich CSS a přilinkuješ do stránky jako CSS (Případně z databáze vygeneruješ styl interní). Můžeš použít něco jako CSS šablonu:
menu {width: <?=$zadanaSirka?>; color: <?=$zadanaBarva?>} /* atd. */

Ještě dej pozor na ošetření vstupů.
PHP_Nemaster
Profil
Str4wberry:

Děkuji,
chtěl bych to udělat jako to 1), ale jak to uložit?
Str4wberry
Profil
Třeba funkcí file_put_contents.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0