Autor Zpráva
Actimel
Profil
Zdravím,
přemýšlím, jak nejlépe udělat stránku, která bude mít nadefinované styly externě a na webu v administraci se budou dát měnit (např. na webu v administraci změníte z bílého pozadí na černé a to se změní ve stylech, aby to tak viděli všichni návštěvníci) jediné co mě napadá, jak by to mohlo jít je udělat např. soubor styles.php, kde bych ty ruzné hodnoty tahal z databáze a pak bych includoval ten soubor do hlavičky (takže už by vpodstatě nebyly externě - to by nevadilo, hlavně ať je to v souboru zvlášť).
Doufám, že si dokážete představit, co tím myslím a budu rád za vaše nápady na efektivnější řešení.
Str4wberry
Profil
Napadají mě dvě možnosti. Jedna je generovat CSS soubory (je třeba dát pozor na kešování) na základě určitých parametrů. Druhá je mít jeden soubor s možnostmi vzhledů a dle nastavení přidat třídu třeba pro <html> a ve společném CSS souboru:
html.jménoTřídy element {vlastnosti}

Záleží na způsobu kolik a jak často se toho bude měnit. Můžeš také používat více CSS souborů, i když z důvodu rychlostní optimalisace bych to nedoporučoval.
Actimel
Profil
no když jsem se nad tím ještě teď tak zamyslel tak nakonec nebude se to měnit tak často, aby každý návštěvník musel čekat na to, co mu vytáhne databáze, takže spíš asi přichází v úvahu to generování stylů, jen vůbec nevím, jak je vygenerovat..
nemeja
Profil
a co třeba mít pro každou barvu styl a pak na základě podmínky upravovat cestu k css souboru, nebo generovat do hlavičky styly jen pro změnu dané barvy
Actimel
Profil
mě se nejedná jen o jednu barvu :) v těch stylech bude třeba 50 tříd a nebudou tam jen barvy ale i jiný věci a než bych udělal kombinaci všech možných stylů.... to bych se radši oběsil :D
nemeja
Profil
No tak na tu generaci bych si vytvořil objekt, kterej by si na základě údajů o nastavení z DB generoval části stylů a ty nakonec spojil do konečného výsledku -> zacachoval a pak načetl uživateli, při změně nastavení by se provedl nový cache.
Actimel
Profil
k čemu je to zacachování? nestačí jen fopen() na otevření styles.css a fwrite() -em tam vypsat názvy tříd a vlastnosti?
Borius
Profil
Actimel:
„… i jiný věci a než bych udělal kombinaci všech možných stylů.... to bych se radši oběsil
Potom jedině podle rady [#2] Str4wberry – soubory CSS generovat. Ptáš se jak? Odpověď tamtéž: „na základě určitých parametrů“.
nemeja
Profil
Actimel:
k čemu je to zacachování?
Představ si, že by jsi musel pro každej refresh generovat znova a znova CSS. Takhle si ho pro danou konfiguraci vytvoříš jen jednou a pak budeš jen kontrolovat jestli existuje a rovnou nalinkuješ ten soubor ;)
Actimel
Profil
nemeja:
no, ale když to budu mít v administraci a vygeneruje se ten styles.css po tom, co kliknu na uložit, tak už se pak nic generovat znovu nemusí, změní se to jen tehdy, pokud někdo v administraci něco změní a uloží, nebo ne?

Borius:
tak to generování by šlo vyřešit tak, že vytáhnu ty vlastnosti ke každé třídě z databáze a pak foreach-em vygeneruji obsah styles.css, který následně do něj zapíšu, správně?
Sir Tom
Profil
Actimel:
Jednou již vygenerovaný soubor style.css se nemusí znovu generovat. Uživatel si jej jenom stáhne.

Myšlenkový postup je takový:
1. uživatel si stáhne soubor style.css (musí existovat) - tím pro uživatele všechna práce končí

2. ty můžeš kdykoliv onen soubor style.css editovat - k tomu máš 2 možnosti:
2a - buď si sám ručně upravíš onen soubor style.css a nahraješ jej na server
2b - vytvoříš si nějakou webovou aplikaci, se kterou CSS upravíš - zde máš opět 2 možnosti
2bI - buď budeš editovat style.css přímo (v nějakém html editoru - např. TinyMCE)
2bII - nebo jej vygeneruješ za pomoci databáze

Záleží na tobě, co chceš. Varianta 2. je nejpohodlnější a nejméně náročná nicméně musíš umět CSS.
Varianta 2bII je zase na udělání nejvíce náročná, ale pro editaci a změnu stylů CSS znát nemusíš.

Ať již použiješ jakýkoliv způsob, vždy bys měl na konci vytvořit nový style.css a umístit jej tam, odkud si jej uživatel může stáhnout (viz bod 1.).
Str4wberry
Profil
Kešováním jsem myslel to, že když se vygeneruje nový styles.css, tak může mít uživatel nakešován ten starý a změny se mu neprojeví. Pokud by byl jeden soubor s všemi variantami, tak by se tohle řešit nemuselo. Pokud tedy soubor přegeneruješ, je vhodné změnit jeho URL, pod kterou se připojuje do stránky (třeba přidáním nějakého smetí typu ?verze=2, aby se soubor stáhl znova).

Teoreticky výsledné CSS nikam do nového souboru ukládat nemusíš, výkonově zřejmě nebude problém mít styles.php, který vrátí CSS se specifickými styly přímo z databáze.
Actimel
Profil
Sir Tom:
2bII je to, co se mé představě nejvíce blíží - protože by to mělo být uděláno tak, aby si web mohl v administraci upravit i úplně obyčejný uživatel internetu
Str4wberry:
a když zakážu kešování toho styles.css, bude to nějak v budoucnu na škodu? když ten styles.css bude mít řekněme 10kB, tak si myslím, že to vyjde na stejno, jestli pokaždé bude uživatel stahovat 10kB nebo bude čekat na script, který zjistí, jestli to bylo přegenerováno nebo ne..

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