Dynamické vkladanie iba použitých CSS a JS súborov
- romiix.org
- Člen | 343
Cieľ:
Cieľom bolo umožniť v šablónach definovanie CSS a JS súborov.
Vytáčalo ma, že vždy som musel definovať v HeaderControl
všetky CSS a JS súbory ktoré sa používali na celom webe a
tie sa vždy všetky ťahaly ku klientovy pri každom požiadavku.
Podla mňa nemá konfigurácia súborov pre UI čo hľadať v presentri, je to
predsa úloha ako stvorená pre šablóny.
K používateľovi sa dostanú vždy iba tie ktoré sú preňho potrebné.
Ako to funguje:
V hociktorej šablóne (pre view aj komponentu) je možné použiť makrá {css}, {js}, {cssContent}, {jsContent}.
Makrá {css} a {js}
Prijímajú zoznam súborov ktoré šablóna potrebuje. Je vhodné plniť
zoznam aj so závislosťami. Každý súbor sa vráti ku klientovy maximálne
raz.
Súbor sa najprv hľadá:
- v priečinku so šablónou (je vhodné najmä pri adresárovej štruktúre v ktorej každá komponenta obsahuje CSS/JS súbory vo svojej zložke
- v priečinku definovanom v $csspath/$jspath
- nehľadá, použije sa absolútna (definovaná) cesta
Ukážka použitia:
{css "grid.css"} {* Nájde v priečinku <priečinok so šablónou>/screen.css *}
{css "screen.css"} {* Nájde v priečinku $csspath/screen.css *}
{css "/var/www/sk/web/www/style/css/screen.css"} {* Nájde v priečinku "/var/www/sk/web/www/style/css/screen.css" *}
{js "live-form-validation.js"}
{js "jquery.min.js", "jquery.nette.js", "jquery.ajaxform.js"} {* definovanie so závislosťami *}
Makrá {cssContent} a {jsContent}
Tieto makrá sú párové a uzatvárajú obsah. Občas sa stáva, že síce máme v načítaný JS, ale potrebujeme ho ešte inicializovať. Pre tento prípad som zvykol vytvárať extra súbor <knižnica>.init.js. To už nie je potrebné:) V priečinku definovanom vo $webtemp sa vytvorí súbor <md5 hash obsahu suboru>.css/.js a ten sa vloží do hlavičky.
Ukážka použitia:
Ak je potrebné v danej šablóne upraviť nejaký detail v CSS, je možné vložiť obsah, ktorý sa načíta iba pri tejto jednej šablóne:
{cssContent}
* { color:red}
{/cssContent}
Obdobne je možné vytvoriť inicializační JS:
{jsContent}
$( 'textarea.editor' ).ckeditor();
{/jsContent}
Kompilátory
Na CSS a JS súbory je možné aplikovať kompilátor. Slúži na to
$cssCompilator
a $jsCompilator
.
Príklad použitia v BasePresenter.php
v metóde
startup
$this->context->publicFileCollector->cssCompilator[] = function ($content)
{
/* Strips Comments */
$content = preg_replace('!/\*.*?\*/!s','', $content);
$content = preg_replace('/\n\s*\n/',"\n", $content);
/* Minifies */
$content = preg_replace('/[\n\r \t]/',' ', $content);
$content = preg_replace('/ +/',' ', $content);
$content = preg_replace('/ ?([,:;{}]) ?/','$1',$content);
/* Kill Trailing Semicolon, Contributed by Oliver */
$content = preg_replace('/;}/','}',$content);
/* Return Minified CSS */
return $content;
};
Postup zfunkčnenia:
- Stiahnuť z https://github.com/…aderControl/
- Rozbaliť niekam kde „vidí“ RobotLoader
- Nastavenie NEON konfigurácie
common:
nette:
latte:
macros:
- \RM\HeaderControl\JsCssMacros #inštalácia potrebných makier (pre inštaláciu NEON-om je nutná najnovšia verzia z gitu)
services:
publicFileCollector:
class: \RM\PublicFileCollector
setup:
- $csspath(%wwwDir%/style/css) # nastavenie defaultnej cesty k css súborom
- $jspath(%wwwDir%/style/js) # nastavenie defaultnej cesty k js súborom
- $webtemp(%wwwDir%/webtemp) # nastavenie cesty k priečinku kam sa budú ukladať súbory
- $removeOld(true) # odstrániť staré verzie CSS/JS?
- addCss( [%wwwDir%/style/css/screen.css] ) # manuálne pridanie súboru, ktorý sa bude načítať vždy
# používam HosipLan-ov kód z https://forum.nette.org/cs/9466-novy-configurator-tovarnicky-opet#p70019.
# je možné vytovoriť obdobnú obyčajnú komponentu napr. v BasePresentri
factories:
header:
class: \RM\HeaderControl
setup:
- setDocType(html5)
- setLanguage(sk)
- setTitle("Titulok")
- addKeywords(["Key1","Key2"])
- setDescription("Popis")
- upraviť
@layout.latte aby
vyzeral nejak takto:
{capture $html}
<body>
...
</body>
</html>
{/capture}
{control header}
{!$html}
Todo:
- Doplnenie komentárov
- examples
- Refaktoring
- Odstránenie závislostí HeaderControl-u na Environment
Čo si o tomto celom myslíte?
Má niekto nejaký nápad ako to zjednodušiť, vylepšiť a pod.?
PS: Toto je NEOTESTOVANÁ VÝVOJOVÁ VERZIA.
PS2: Mám sa posnažiť o nejaký vývoj pre ostatných (GitHub, Composer),
bude to niekto okrem mňa používať?
PS3: Ak by mi niekto venoval nejaký čas a vysvetlil nejaké problémy okolo
GitHub-u a Composer-u, rád splním PS2:)
Editoval romiix.org (4. 11. 2012 1:25)
- Filip Procházka
- Moderator | 4668
Github je docela základ. Chtěl jsem se na to podívat, ale z uložto to stahovat nebudu.
- romiix.org
- Člen | 343
Aj keď to vzhľadom na predošlí príspevok vyzerá, že HosipLan s tým nič nemá, hodne vecí som s ním diskutoval a inšpiroval sa uňho. Vďaka;)
- romiix.org
- Člen | 343
Pridaná podpora pre kompilátory ako služby.
common:
services:
publicFileCollector:
class: \RM\PublicFileCollector
setup:
- $csspath(%wwwDir%/style/css)
- $jspath(%wwwDir%/style/js)
- $webtemp(%wwwDir%/webtemp)
- $removeOld(true)
- addCssCompilator(@cssSimpleMinificator)
cssSimpleMinificator:
class: \RM\PublicFileCollector\CssSimpleMinificator
- romiix.org
- Člen | 343
Ešte premýšľam nad podporou balíčkov.
Napríklad v šablóne s NiftyGrod-om by som potreboval manuálne
vypísať:
{js "jquery.min.js", "jquery-ui.js", "netteForms.js", "grid.js"}
{css "grid.css", "grid.custom.css"}
Toto je dosť pracné vypisovať v každej šablóne s gridom.
Preto by bolo fajn definovať balíček
common:
services:
publicFileCollector:
setup:
- addPackage("NiftyGrid",["jquery.min.js", "jquery-ui.js", "netteForms.js", "grid.js"], ["grid.css", "grid.custom.css"])
Syntaxou NEON-u si nie som 100% istý
a potom by stačilo v šablóne použiť
{pfpack NiftyGrid}
To by bolo celkom fajn, nie?
Plus ešte by som mohol implementovať aj vkladanie balíčkov do balíčkov. (dosť krkolomné vyjadrenie myšlienky:)
common:
services:
publicFileCollector:
setup:
- addPackage("jQuery",NULL,["jquery.min.js"])
- addPackage("jQuery-UI",["jQuery"],["jquery-ui.js"])
- addPackage("netteForms",NULL,["netteForms.js"])
- addPackage("NiftyGrid",["jQuery","jQuery-UI","netteForms"],["grid.js"], ["grid.css", "grid.custom.css"])
Výhodou by bola možnosť vypísania jednej cesty k súboru vždy iba raz a následného používania skrátených názvov.
Touto úpravou by bolo zabezpečené, že sa:
- Cesta ku každému súboru musí zadefinovať iba raz
- V prípade prejdenia na novú verziu napr. jQuery stačí uraviť jedinú cestu k súboru
- Minimalizuje sa priestor pre chyby spôsobené nedodaním všetkých závislostí
Ešte premýšľam nad API, čo sa ako má volať a taktiež aj ako sa má volať makro pre aplikovanie balíčku.
- zopper
- Člen | 20
Vypadá to skvěle, akorát to nejsem schopný rozchodit… :(
Class \RM\PublicFileCollector\CssSimpleMinificator has not been
found – přitom soubory jsou nahrané všechny a pokud v neonu změním
class: \RM\PublicFileCollector\CssSimpleMinificator na nějakou jinou
třídu, tak ta se načte (sice spadne o kus dál, ale až při pokusu
o použití – načte se i
\RM\PublicFileCollector\ImageReplacer).
Soubory jsem umístil do /app/components/HeaderControl/, je to verze z Nov 06, 2012, Nette je 2.0.6.
EDIT: Tak mě ještě napadlo zkusit ten název ručně přepsat na obou místech, i když vypadal absolutně stejně – a rozjelo se to. :-/ Mohl by to být nějaký netisknutelný znak?
Editoval zopper (7. 11. 2012 21:32)
- David Ďurika
- Člen | 328
akurat sa mi nepaci to ze takto si rozne po slablonach bude ‚volat‘ tie
css a js a casom stratis uplne prehlad o tom, ze kde co mas…
ja to riesim trochu inak a hlavne jednoduchsie https://forum.nette.org/…a-js-suborou
- romiix.org
- Člen | 343
achtan napsal(a):
akurat sa mi nepaci to ze takto si rozne po slablonach bude ‚volat‘ tie css a js a casom stratis uplne prehlad o tom, ze kde co mas…
ja to riesim trochu inak a hlavne jednoduchsie https://forum.nette.org/…a-js-suborou
Myslím, že riešim problém komplexnejšie a lepšie (subjektívne podla mňa):
- V prípade „núdze“ je možné definovať súbory kdekoľvek cez službu.
- Definícia súborov pre frontend podla mňa patrí do šablóny.
- Tvoje riešenie nie je rovnako použiteľné v komponentách.
- Makro
{cssContent}
resp.{jsContent}
sa tiež môže niekedy hodiť. - Balíčky mám taktiež navrhnuté v ešte nezverejnenej verzií.
Každopádne si navrhol celkom jednoduché a použiteľné riešenie, ktoré však nebudem využívať lebo nerieši problém tak ako to vyhovuje mne:)
- romiix.org
- Člen | 343
zopper napsal(a):
Vypadá to skvěle, akorát to nejsem schopný rozchodit… :(
Class \RM\PublicFileCollector\CssSimpleMinificator has not been found – přitom soubory jsou nahrané všechny a pokud v neonu změním class: \RM\PublicFileCollector\CssSimpleMinificator na nějakou jinou třídu, tak ta se načte (sice spadne o kus dál, ale až při pokusu o použití – načte se i \RM\PublicFileCollector\ImageReplacer).Soubory jsem umístil do /app/components/HeaderControl/, je to verze z Nov 06, 2012, Nette je 2.0.6.
EDIT: Tak mě ještě napadlo zkusit ten název ručně přepsat na obou místech, i když vypadal absolutně stejně – a rozjelo se to. :-/ Mohl by to být nějaký netisknutelný znak?
Veľmi nepríjemný problém:( Vďaka za riešenie pre ostatných.
Žiaľ u mňa sa chyba neprejavuje tak neviem čo a ako mám opraviť.
- David Ďurika
- Člen | 328
romiix.org napsal(a):
Každopádne si navrhol celkom jednoduché a použiteľné riešenie, ktoré však nebudem využívať lebo nerieši problém tak ako to vyhovuje mne:)
jasne kolko ludi tolko chuti :) mne zatial to moje riesenie vyhovuje, cas ukaze…
- romiix.org
- Člen | 343
Nová verzia je vonku:)
Vďaka achtan -ovi a jeho príspevku som sa dokopal k dorobeniu podpory pre balíčky. Výrazne som sa inšpiroval jeho nastavovaním. Mnou navrhovaný spôsob bol dosť divoký a neprehľadný.
Čo je nové:
Definovanie balíčkov
common:
parameters:
csspath: %wwwDir%/style/css
jspath: %wwwDir%/style/js
webtemp: %wwwDir%/webtemp
packages:
jQuery:
js:
- %jspath%/jquery-1.8.2.min.js
netteForms:
js:
- %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/js/netteForms.js
jQueryUI:
extends:
- jQuery
css:
- %wwwDir%/libs/jquery-ui-1.9.1.custom/css/smoothness/jquery-ui-1.9.1.custom.min.css
js:
- %wwwDir%/libs/jquery-ui-1.9.1.custom/js/jquery-ui-1.9.1.custom.min.js
NiftyGrid:
extends:
- jQueryUI
- netteForms
css:
- %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/css/grid.css
js:
- %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/js/grid.js
Inicializácia v PublicFileCollector
common:
services:
publicFileCollector:
class: \RM\PublicFileCollector
setup:
- $csspath(%csspath%)
- $jspath(%jspath%)
- $webtemp(%webtemp%)
- setPackages(%packages%)
Príklad použitia sablona-s-gridom.latte
{pfpack "NiftyGrid"}
Aby boli informácie pokope, vytvoril som wiki .
Editoval romiix.org (8. 11. 2012 15:40)
- romiix.org
- Člen | 343
enumag napsal(a):
Vypadá to jako hezký koncept, kterému chybí pár věcí: :-)
- Bylo by hezké mít to jako extension.
Viem, ale zatiaľ som extension nepísal tak som to spravil ako štandardný
addon. Vzhľadom na jednoduchosť inštalácie je to možno aj
zbytočnosť. Beriem späť, prečítal som si odkazovaný článok znovu
a súhlasím, že je to lepšie. Keď si nájdem trochu času,
prerobím to.
- Instalace pomocí Composeru.
Zatiaľ to tu nie je žiadne „terno“, žiadny extra záujem, tak nemám na to dôvod. Ak vznikne požiadavka, vznikne balíček:)
- Podpora CSS preprocesorů a JS minifikace.
Podpora existuje a je dokumentovaná.
Editoval romiix.org (8. 11. 2012 18:17)
- Vojtěch Dobeš
- Gold Partner | 1316
Ej, to je psaní, to používat nebudu…
CompilerExtension vždycky zjednoduší zápis v configu a tudíž to s větší pravděpodobností i někdo zkusí použít :).
A ono to ani nemá Composer, tak to už vůbec nebudu zkoušet…
Je lepší se na to dívat opačně – nabídnout co nejlepší doplněk a doufat, že ho někdo použije. Ne čekat na reakce a de facto si nechat určovat, co má dělat, co má obsahovat… Co jiného je enumagův příspěvek, než „požiadavka“.
Myšleno samozřejmě v dobrém, doplňky tohoto typu jsou cenné zboží :).
Editoval vojtech.dobes (8. 11. 2012 18:39)
- romiix.org
- Člen | 343
vojtech.dobes napsal(a):
Ej, to je psaní, to používat nebudu…
CompilerExtension vždycky zjednoduší zápis v configu a tudíž to s větší pravděpodobností i někdo zkusí použít :).
A ono to ani nemá Composer, tak to už vůbec nebudu zkoušet…
Je lepší se na to dívat opačně – nabídnout co nejlepší doplněk a doufat, že ho někdo použije. Ne čekat na reakce a de facto si nechat určovat, co má dělat, co má obsahovat… Co jiného je enumagův příspěvek, než „požadavka“.
Nedá inak než súhlasiť. O pár dní sa k tomu dúfam dostanem a napravím nedostatky.
- enumag
- Člen | 2118
vojtech.dobes: Neřekl jsem ani jedno ani druhé. A řeknu ti rovnou že to vyzkouším i bez composeru a zas tak moc psaní mi to nepřijde. A pokud jde o ty 3 body co jsem psal tak je to pouze konstatování, že mi tam tyto funkce chybí. Tzn. nemám problém si to forknout a dopsat sám až to budu potřebovat.
- Vojtěch Dobeš
- Gold Partner | 1316
enumag Však já tě ani necitoval, odpovídal jsem čistě romiixovi – omlouvám se, pokud to vyznělo, že si tě beru do úst.
- enumag
- Člen | 2118
@romiix: K tomu Composeru, dle mého názoru by úplně stačilo přidat soubor composer.json, vytvářet balíček na packagist mi nepřipadá podstatné. ;-)
@vojtech.dobes: Hlavně že zmiňuješ „enumagův příspěvek“, že? Ale dobře, omluva se přijímá. S tím, že by si autor neměl nechat diktovat co tam bude a nebude naprosto souhlasím. Pouze jsem podal nějaké návrhy, což většina autorů uvítá. Zda je opravdu použije je ovšem čistě na něm – případně může odpovědět „pošli pull request“, což je též v pořádku.
Editoval enumag (8. 11. 2012 19:07)
- romiix.org
- Člen | 343
Tak som to snáď nejak zvládol.
GitHub: https://github.com/…eaderControl
Packgist: https://packagist.org/…eadercontrol
Registrácia: \RM\PublicFileCollectorExtension::register($configurator);
Niekto by to mohol otestovať;)
- romiix.org
- Člen | 343
@vojtech.dobes: @enumag: Akékoľvek pripomienky vedúce k môjmu vlastnému zdokonaleniu prijímam bez problémov a s radosťou:)
Ako sa tak pozerám do kódu, čaká ma refaktoring. Od prvej verzie sa to dosť rozvinulo.
- Patrik Votoček
- Člen | 2221
Pár postřehů:
- na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.
- „PublicFileCollector“ je ale příšernej název to bude překlepů
- umí to zkopírovat i obrázky které jsou linkované uvnitř CSS souborů?
- romiix.org
- Člen | 343
Patrik Votoček napsal(a):
Pár postřehů:
- na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.
Rozhodne súhlasím.
- „PublicFileCollector“ je ale příšernej název to bude překlepů
Súhlasím, ale ešte som nevymyslel lepší názov.
- umí to zkopírovat i obrázky které jsou linkované uvnitř CSS souborů?
Áno:
publicFileCollector:
addCssCompilator:
- @imageReplacer
services:
imageReplacer:
class: \RM\PublicFileCollector\ImageReplacer
setup:
- $webtemp(%wwwDir%/webtemp)
- Patrik Votoček
- Člen | 2221
romiix.org napsal(a):
Áno …
publicFileCollector: addCssCompilator: - @imageReplacer services: imageReplacer: class: \RM\PublicFileCollector\ImageReplacer setup: - $webtemp(%wwwDir%/webtemp)
Tohle by imho mohla umět ta extension s nějakou lepší syntax.
Btw napadla mě další věc na většině webů mám 2 druhy CSS/JS.
- je společný pro všechny stránky
- liší se stránku od stránky
bylo by super kdyby to teda umělo vygenerovat 2 soubory jeden společný (uživateli se nakešuje) a jeden pro každou stránku. Jde tohle nějak?
- romiix.org
- Člen | 343
Patrik Votoček napsal(a):
romiix.org napsal(a):
Áno …
publicFileCollector: addCssCompilator: - @imageReplacer services: imageReplacer: class: \RM\PublicFileCollector\ImageReplacer setup: - $webtemp(%wwwDir%/webtemp)
Tohle by imho mohla umět ta extension s nějakou lepší syntax.
Kompilátory sú niečo extra, navyše a môže ich byť viac, dá sa pridávať vlastné atď.
Je pravdepodobné, že tento kompilátor by chcel každý, ale napr. ja
využívam aj distribuovaný CssSimpleMinificator
ale niekto iný
by ho nemusel chcieť. Preto som sa priklonil k tomu, že defaultne nebude
žiadny a ak niekto nejaký chce tak si ho vcelku jednoducho pridá.
Alebo si to myslel tak, že by som vytvoril ďalšie rozšírenie
\RM\CssSimpleMinificatorExtension::register($configurator);
ktoré
by ho pridalo samo?
Btw napadla mě další věc na většině webů mám 2 druhy CSS/JS.
- je společný pro všechny stránky
- liší se stránku od stránky
bylo by super kdyby to teda umělo vygenerovat 2 soubory jeden společný (uživateli se nakešuje) a jeden pro každou stránku. Jde tohle nějak?
Teraz to neide, ale je to dobrý nápad. Ako najlepšie riešenie sa mi javí
zlučovať ich na úrovni balíčkov. Tzn. nadefinuješ si balíček
Frontend
a balíček napr. Contact
a do hlavičky sa
pošlú súbory frontend.<hash>.css
a
contact.<hash>.css
.
Editoval romiix.org (9. 11. 2012 10:55)
- romiix.org
- Člen | 343
Patrik Votoček napsal(a):
Pár postřehů:
- na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.
- „PublicFileCollector“ je ale příšernej název to bude překlepů
Pôvodne som to mal rozdelené na dve samostatné knižnice,
HeaderControl
a PublicFileCollector
. Potom som sa
rozhodol, že aj tak to používam spolu, tak som ich zlúčil.
Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.
HeaderControl
vzhľadom na existenciuHeaderControl
u od Ondřeja Mirtesa premenujem naHeader
.- Príšerne dlhý názov
PubliFileCollector
nazvem skratkouPFColl
.
Header
bude k svojej funkčnosti vyžadovaťPFColl
.PFColl
bude nezávislá knižnica.PFColl
bude pri registrácií definovať aj všetky pribalené kompilátory, ale predvolene budú vypnuté.
Pribudnú nové možnosti nastavenia:
PFColl:
cssSimpleMinificator: true // default false, aktivovanie kompilátoru cssSimpleMinificator
mergePackages: true // default false, zapnutie spájania súborov na úrovni balíčkov
K aplikovaniu zmien sa dostanem asi až o pár dní, takže poprosím o prípadné pripomienky čím skôr. Vôbec netvrdím, že navrhované úpravy sú 100% správne:)
- romiix.org
- Člen | 343
vojtech.dobes napsal(a):
Co takhle
AssetsCollector
?
Ok, je to asi samopopisnejší názov.
- Patrik Votoček
- Člen | 2221
romiix.org napsal(a):
Je pravdepodobné, že tento kompilátor by chcel každý, ale napr. ja využívam aj distribuovaný
CssSimpleMinificator
ale niekto iný by ho nemusel chcieť. Preto som sa priklonil k tomu, že defaultne nebude žiadny a ak niekto nejaký chce tak si ho vcelku jednoducho pridá.Alebo si to myslel tak, že by som vytvoril ďalšie rozšírenie
\RM\CssSimpleMinificatorExtension::register($configurator);
ktoré by ho pridalo samo?
Ne myslel jsem to tak aby jsi využil naplno možnosti compiler extension.
assets:
setup: # tohle je jenom ukazka nevim co presne tam ma byt
csspath: %appDir/assets/css%
jspath: %appDir/assets/js%
webtemp: %wwwDir%/assets
css:
- someMyCssFile.css
packages:
jQuery:
js: %jspath%/jquery-1.8.2.min.js
cssCompilers:
imageReplacer: true # internal
- \RM\PublicFileCollector\ImageReplacer() # external (3rd part)
Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.
To nedělej! Nevidím v tom smysl. Nedokážu si představit že by to kdy někdo používal samostatně.
- romiix.org
- Člen | 343
Patrik Votoček napsal(a):
Ne myslel jsem to tak aby jsi využil naplno možnosti compiler extension.
Myslím, že som to spravil veľmi podobne ako si to navrhol.
>
Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.
To nedělej! Nevidím v tom smysl. Nedokážu si představit že by to kdy někdo používal samostatně.
Neskoro. Už som to oddelil.
https://github.com/…atyus/Header
https://github.com/…etsCollector
Fakt si nie som 100% istý tým že je to správne, ale k tomu som zatiaľ dospel. Vychádzal som z toho, že samotný Header je použiteľný aj sám na generovanie hlavičiek. Teraz som si uvedomil, že vlastne sám o sebe nemá extra zmysel, pretože každý bude chcieť v hlavičke definovať aj CSS a JS.
Najväčší problém pr myšlienke ponechania tých dvoch doplnkov v jednom som mal s namespace-ami (čo a ako nazvať, ako do seba zanoriť), ale to bol asi slabý dôvod.
Musím si to ešte nechať uležať v hlave.
Nejaké nápady ohľadom spojenia, namespace-ov (aj už použitých), doplnku alebo pod.?
- romiix.org
- Člen | 343
Dlho som si to nenechal uležať:)
Teraz som si uvedomil, že vlastne sám o sebe nemá extra zmysel, pretože každý bude chcieť v hlavičke definovať aj CSS a JS.
Z tohoto dôvodu som to teda celé znovu zlúčil a je z toho jeden (dúfam dobre použiteľný) komplexný doplnok.
Dokumentácia: https://componette.org/search/?…
GitHub: https://github.com/…atyus/Header
Packagist: https://packagist.org/…es/rm/header (netestované)
Doplnok je použitý v priebežne vytváranom projekte, takže by mal pracovať správne.