String:truncate() – návrh pro doplnění dalších parametrů
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jakub Bouček
- Člen | 54
Mimo Nette používám na zkracování textů svoji funkci, kterou
s úspěchem používám již delší dobu a na rozdíl od
String::truncate()
má ještě několik vlastností:
- pokud délka textu překračuje mez o několik málo znaků, tak se nezkracuje – vhodné zejména u výpisů s omezením kolem 20–30 znaků, kdy je nepříjemné, že většina nadpisu se kolem tohoto limitu pohybuje a mívá tak uřezán nesmyslně pouze posledních několik znaků (Např. u nadpisů článků v úzkém sloupci, např.: Aktuální podzimní nabídka naší kuchy…). Proto je lepší, aby se text ořízl buď výrazně, nebo vůbec.
- ořezávání textu dokončuje celá slova – v rámci limitu funkce pokusí dokončit slovo až k první mezeře (zde by bylo vhodné doplnit jakoukoliv interpunkci).
Kód funkce jsem již v minulosti v článku Zkrácení textu s XHTML značkami.
Ocenil bych, kdyby tyto vlastnosti byly součástí funkce, nebo by se daly nějak příjemně implementovat vlastními silami.
- David Grudl
- Nette Core | 8228
Velmi nerad překračuju magickou hranici tří parametrů na funkci, takže
případné doplnění meze by se mělo uvést už v parametru
$limit
(např. jako '20+10'
), ale není prostě
lepší rovnou nastavit, například u těch titulků, limit na 30?
ad ořezávání textu dokončuje celá slova: to String::truncate() dělá, včetně interpunkce.