Glen MacArthur vydal AV Linux (AVL) a MX Moksha (MXM) 25. S linuxovým jádrem Liquorix. AV Linux (Wikipedie) je linuxová distribuce optimalizována pro tvůrce audio a video obsahu. Nejnovější AV Linux vychází z MX Linuxu 25 a Debianu 13 Trixie. AV Linux přichází s desktopovým prostředím Enlightenment 0.27.1 a MX Moksha s prostředím Moksha 0.4.1 (fork Enlightenmentu).
Ubuntu pro testování nových verzí vydává měsíční snapshoty. Dnes vyšel 1. snapshot Ubuntu 26.04 LTS (Resolute Raccoon).
Zástupci členských států EU se včera shodli na návrhu, který má bojovat proti šíření materiálů na internetu zobrazujících sexuální zneužívání dětí. Nařízení známé pod zkratkou CSAM a přezdívané chat control mělo množství kritiků a dlouho nebyla pro jeho schválení dostatečná podpora. Pro schválení byla potřeba kvalifikovaná většina a dánské předsednictví v Radě EU se snažilo dosáhnout kompromisu. Návrh nakonec po dlouhých týdnech
… více »Britské herní studio Facepunch stojící za počítačovými hrami Garry's Mod a Rust uvolnilo svůj herní engine s&box (Wikipedie) jako open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT. Herní engine s&box je postavený nad proprietárním herním enginem Source 2 od společnosti Valve.
Vývoj programovacího jazyka Zig byl přesunut z GitHubu na Codeberg. Sponzoring na Every.
Stejně jako GNOME i KDE Plasma končí s X11. KDE Plasma 6.8 poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Poslanci Evropského parlamentu dnes vyzvali k výraznému zvýšení ochrany nezletilých na internetu, včetně zákazu vstupu na sociální sítě pro osoby mladší 16 let. Legislativně nezávazná zpráva, kterou dnes odsouhlasil Evropský parlament poměrem 493 hlasů pro ku 92 proti, kromě zavedení věkové hranice 16 let pro využívání sociálních sítí, platforem pro sdílení videí či společníků s umělou inteligencí (AI) vyzývá také k zákazu … více »
Doom v KiCadu nebo na osciloskopu? Žádný problém: KiDoom: Running DOOM on PCB Traces a ScopeDoom: DOOM on an Oscilloscope via Sound Card.
Po AlmaLinuxu byl v nové stabilní verzi 10.1 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Open source reimplementace počítačových her Tomb Raider I a Tomb Raider II spolu s dalšími vylepšeními a opravami chyb TRX byla vydána ve verzi 1.0. Jedná se o sloučení projektů / enginů TR1X a TR2X do jednoho TRX. Videoukázka na YouTube.
Nejprve bych se rád čtenářům omluvil za větší pauzu mezi jednotlivými díly, ale bohužel se mi nedostávalo času. Lepší zprávou, i když ne už moc aktuální, je, že 30. listopadu 2006 vyšla nová verze Smarty 2.6.15 a hned 1. prosince 2006 vyšla verze Smarty 2.6.16, protože ve verzi vydané o den dříve se vyskytla chyba. Changelog popisuje jednotlivé změny oproti předchozím verzím.
Smarty umožňuje v šablonách používat matematické výpočty. Ty lze zapisovat přímo, způsobem obdobným, jak jsme zvyklí z PHP, nebo pomocí prostředí math. Rozhodneme-li se provádět zápis přímo, což je nejjednodušší metoda, pokud nepotřebujeme složité vzorce, úpravu výstupu apod., může použití vypadat následovně:
{* Jednoduche priklady *}
{$promenna + 1}
{$promenna_1 * $promenna_2}
{* Slozitejsi priklady *}
{$promenna_1 - $promenna_2.klic_1 * $promenna_2.klic_2 % $promenna_3}
{assign var="vysledek" value="`$promenna_1 * $promenna_2`"}
Příklad jednoduše znázorňuje, jak použít co nejjednodušeji matematické možnosti ve Smarty. Zajímavým může být poslední řádek, který ukazuje, jakým způsobem lze výsledek výpočtu uložit do proměnné. K uložení slouží funkce assign. Aby byl obsah parametru zpracován a teprve pak uložen do proměnné, musíme matematický zápis uzavřít do zpětných apostrofů (`).
Chceme-li však použít více možnosti matematiky, které Smarty nabízí, je vhodné využít funkce math. Ta umožňuje nejen složitější zápisy, ale také nastavení formátu výsledku, okamžité přiřazení výsledku proměnné, zápis vzorců pomocí přiřazení hodnot jednotlivým proměnným v matematickém výrazu.
Příklad 1 - Obvod obdélníku
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska}
Příklad 2 - Obvod obdélníku s konfiguračním souborem
{* #sirka# = 4, #vyska# = 5 *}
{math equation="2 * (x + y)" x=#sirka# y=#vyska#}
Příklad 3 - Obvod obdélníku s uložením výsledku do proměnné
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska assign="obvod"}
Příklad 4 - Obvod obdélníku s definicí formátu výsledku
{math equation="2 * (x + y)" x=8.9895 y=1.2549 format="%.2f" assign="obvod"}
Pro určení formátu výsledku lze použít formátovací řetězce známé pro funkci printf jazyka PHP.
Smarty umožňuje na jednotlivé proměnné aplikovat tzv. modifikátory. Ty se používají k úpravě obsahu proměnných na úrovni šablon. Syntaze použití modifikátorů na proměnné je následující: $promenna|modifikator:parametry. Důležitou poznámkou, než se začneme přímo zabývat použitím modifikátorů, je, že modifikátor je aplikován na proměnnou, resp. její obsah. Pokud ale použijeme modifikátor na pole, bude aplikován na každý jeho prvek. Chceme-li použít modifikátor na pole jako celek, použijeme před názvem modifikátoru symbol @ (zavináč). Jednoduchým příkladem může být následující výpis:
{* Vypise pocet prvku v poli *}
{$array|@count}
Modifikátor capitalize změní první písmeno každého slova v řetězci na velké. Ve výchozím nastavení nedochází k úpravě prvního písmene. Je-li následováno číslicí a použijeme-li parametr true, bude k úpravě docházet. Efekt parametru a použití modifikátoru je patrný z následujícího výpisu. Funkce modifikátoru je shodná s PHP funkcí
ucfirst().
{* Promenna $foo obsahuje retezec "toto je test v3" *}
{$foo|capitalize}
{* Vystup: Toto Je Test v3 *}
{$foo|capitalize:true}
{* Vystup: Toto Je Test V3 *}
Modifikátor cat slouží ke konkatenaci (spojení) dvou řetězců. Nemá žádné parametry umožňující upravit jeho chování, jediným parametrem je řetězec, který má být připojen.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|cat:' - snad posledni
'}
{* Vystup: toto je test - snad posledni
*}
Modifikátor count_ existuje ve Smarty v několika variantách,
prvním je count_characters, druhým count_words,
třetím count_sentences a posledním count_paragraphs. Již z názvu by mohlo být patrné k čemu jednotlivé modifikátory slouží. Postupně tedy - počet znaků v proměnné, počet slov v proměnné, počet vět v proměnné a nakonec počet odstavců v proměnné. Pouze count_characters umožňuje použití parametru ovlivňující funkci modifikátoru. Výchozí nastavení je na false, což znamená, že bílé znaky nebudou započítávány do výsledného počtu znaků. Chceme-li, aby tomu bylo naopak, bílé znaky byly započítávány, nastavíme parametr na true.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|count_characters}
{* Vystup: 10 *}
{$foo|count_characters:true}
{* Vystup: 12 *}
{$foo|count_words}
{* Vystup: 3 *}
{* Promenna $foo obsahuje retezec "Toto je test. Mam rad Linux." *}
{$foo|count_sentences}
{* Vystup: 2 *}
{* Promenna $foo obsahuje retezec "Toto je test.\n Mam rad Linux." *}
{$foo|count_paragraphs}
{* Vystup: 2 *}
Tento modifikátor slouží pro formátování výstupního data a času dle zadaných kritérií. Pro formátování data a času slouží zástupné znaky, které se používají pro PHP funkci strftime().
{$smarty.now|date_format:"%d.%m.%Y"}
{* Vystup: 19.01.2007 - vystup samozrejme zavisi na dni pouziti sablony
*}
Modifikátor kontrolující, zda-li byla proměnné přiřazena nějaká hodnota, tedy jestli není prázdná. Pokud je proměnná prázdná, je jí přiřazena hodnota, která byla předána modifikátoru jako jeho parametr.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|default:'hodnota'}
{* Vystup: toto je test *}
{* Promenna $foo_2 nebyla inicializovana *}
{$foo_2|default:'hodnota'}
{* Vystup: hodnota *}
Modifikátor slouží k úpravě proměnné dle zadaných pravidel. Převádí "nevhodné" znaky, jakými mohou být např. apostrofy, na entity, upravuje tvar e-mailové adresy, aby zamezil zpracování roboty (jmeno@domena.cz převede na jmeno[AT]domena[DOT]cz) apod. Parametry použití tohoto modifikátoru jsou dostupné z dokumentace.
{* Promenna $foo obsahuje retezec "jmeno@domena.cz" *}
{$foo|escape:'mail'}
{* Vystup: jmeno[AT]domena[DOT]cz *}
Modifikátor sloužící k odsazení textu o určitý počet (ve výchozím nastavení 4) znaků (výchozí je mezera, lze upravit). Tento modifikátor má tedy dva parametry, jejichž pořadí je potřeba dodržet.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\Radek 3" *}
{$foo|indent:5:"\t"}
{* Vystup: kazdy radek bude odsazet o pet tabelatoru *}
Modifikátor převadí obsah proměnné na malá písmena.
{* Promenna $foo obsahuje retezec "Toto Je TEST" *}
{$foo|lower}
{* Vystup: toto je test *}
Modifikátor převadí všechny znaky nového řádku \n
na HTML ekvivalent <br />.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\nRadek 3" *}
{$foo|nl2br}
{* Vystup: Radek 1<br />Radek 2<br />Radek 3 *}
Modifikátor funguje podobně jako PHP funkce preg_replace(), a používá stejné zástupné znaky v regulárních výrazech. Nahrazení textu dle regulárního výrazu.
{* Promenna $foo obsahuje retezec "Radek\t1\nRadek\t2\nRadek\t3" *}
{$foo|regex_replace:"/[\r\t\n]/":" "}
{* Vystup: Radek 1 Radek 2 Radek 3 *}
Modifikátor má obdobnou funkci jako regex_replace s tím rozdílem, že neumožňuje použití regulárních výrazů. Dochází tedy pouze k náhradě hledaného řetězce za jiný.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|replace:'je':'neni'}
{* Vystup: toto neni test *}
Modifikátor umožňuje vložit libovolný znak (výchozí je mezera) mezi znaky v proměnné.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|spacify}
{* Vystup: t o t o j e t e s t *}
{$foo|spacify:"!"}
{* Vystup: t!o!t!o! !j!e! !t!e!s!t! *}
Modifikátor slouží k formátování řetězce dle formátovacích znaků, které jsou shodné jako u funkce sprintf().
{* Promenna $foo obsahuje retezec "3.1415" *}
{$foo|string_format:"%d"}
{* Vystup: 3 *}
{$foo|string_format:"%.2f"}
{* Vystup: 3.14 *}
Modifikátor slouží k nahrazení opakujících se mezer, nových řádků a tabelátorů jednou mezerou (výchozí nastavení), případně libovolným řetězcem, definovaným parametrem.
{* Promenna $foo obsahuje retezec "Toto \t je\n test" *}
{$foo|strip}
{* Vystup: Toto je test *}
{$foo|strip:"-"}
{* Vystup: Toto-je-test *}
Modifikátor slouží k odstranění všech HTML tagů v proměnné a jejich nahrazení jednou mezerou. Pokud chceme, aby došlo k nahrazení bez mezery, použijeme parametr false - jako výchozí je definováno true.
{* Promenna $foo obsahuje retezec "Toto je <b>test</b>" *}
{$foo|strip_tags}
{* Vystup: Toto je test *}
{$foo|strip_tags:false}
{* Vystup: Toto je test *}
Modifikátor slouží k "oříznutí" řetězce. K upřesnění funkce slouží čtyři parametry. První udává počet znaků, na které má být řetězec zkrácen (výchozí nastavení 80 znaků), druhý parametr udává, jakým řetězcem má být oříznutý text následován (výchozí ...), třetí parametr určuje, zda je povoleno oříznutí řetězce v půlce slova, nebo zda-li se má provést odříznutí před tímto slovem (ve výchozím nastavení na false - nedělit slova). Poslední parametr určuje, že bude vypsáno poslední slovo řetězce a podle toho se přizpůsobí oříznutí. Vysvětlování se může zdát složité, nejlepší je vyzkoušet si funkci modifikátoru v praxi, nebo se podívat na výpis kódu.
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|truncate:10}
{* Vystup: Toto je... *}
{$foo|truncate:10:"!"}
{* Vystup: Toto je! *}
{$foo|truncate:10:"-":true}
{* Vystup: Toto je de- *}
{$foo|truncate:15:"-":false:true}
{* Vystup: Toto je... testovani*}
Modifikátor převádí obsah proměnné na velká písmena.
{* Promenna $foo obsahuje retezec "Toto je test" *}
{$foo|upper}
{* Vystup: TOTO JE TEST *}
Modifikátor pracující na podobném principu jako truncate s tím rozdílem, že text neořezává, ale řeší jeho zalamování. První parametr udává, po kolika znacích (výchozí 80) má dojít k zalomení textu, druhý parametr udává, jaký znak se má pro zalomení použít (výchozí \n).
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|wordwrap:15}
{* Vystup: Toto je delsi\nretezec k\ntestovani *}
{$foo|wordwrap:15:"<br />}
{* Vystup: Toto je delsi<br />retezec k<br />testovani *}
Veškeré výše popsané modifikátory lze libovolně vhodně kombinovat. Následuje několik takových ukázek, z kterých by mělo být zřejmé, jak kombinaci modifikátorů zapisovat. Z výpisu je i vidět, že závisí na pořadí zápisu modifikátorů (modifikátory jsou aplikovány směrem od proměnné).
{* Promenna $foo obsahuje retezec "Toto je retezec k testu *}
{$foo|upper|spacify}
{* Vystup: T O T O J E R E T E Z E C K T E S T U *}
{$foo|upper|spacify|truncate:15}
{* Vystup: T O T O J E... *}
{* Nejprve byl retezec zvetsen, pote vlozeny mezery a pak oriznut *}
{* Pocet mezer se tedy promitl do poctu znaku k oriznuti *}
{$foo|upper|truncate:15|spacify}
{* Vystup: T O T O J E R E T E Z E C . . . *}
{* Nejprve byl retezec zvetsen, pote oriznut a pak vlozeny mezery *}
{* Vlozeni mezer se tedy promitlo na ... vlozenych modifikatorem truncate *}
V příštím díle se seznámíme s vestavěnými funkcemi šablonovacího systému Smarty. Abych alespoň předběžně nastínil, tak prozradím, že mezi tyto funkce patří např. podmínky a různé cykly. Více ale až v příštím díle seriálu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
strftime() lze použít %e tak, aby byl vypisován den v měsíci bez předchozí nuly. Čísla 1 - 9 budou předsazena mezerou, zbývající čísla nebudou nijak ovlivněna. Něco podobného pro měsíc jsem nikde neviděl a nenašel, ale určitě by se to dalo vyřešit na úrovni vlastního pluginu. Téma vlastních pluginů bude v tomto seriálu také probráno a váš problém by mohl vyústit v jeden z ukázkových příkladů
{$var|unserialize|var_export:True|string_format:"<?php\n%s\n?>"|highlight_string}
ma to sice jeden mensi bug, ale jako ukazka to staci.
Tohle vrací den. měsíc. rok, ale s nulou před číslem měsíce.{$myDate|date_format:"%e. %m. %Y"}
Tohle nulu odstraní:{$myDate|date_format:"%e. %#m. %Y"}
Jestli to chcete mít funky, tak na to můžete jít i takhle:{assign var="myDateTimestamp" value=$myDate|strtotime}
{"j. n. Y"|date:$myDateTimestamp}
(převzato odsud)