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
+
0
-

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.

Honza Kuchař
Člen | 1662
+
0
-

Vypadá to výborně, asi to začnu také používat.

David Grudl
Nette Core | 8228
+
0
-

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.