Witam,
Chcialem zrobic taki motyw ze przy wyswietlaniu newsa na stronie glownej potrzeboje wyswietlac nie wiecej niz np 50 znakow. W django sobie to robilem za pomoca |truncatewords. Nie moge sie doszukac w dokumentacji czy cos podobnego jest w yii.
Page 1 of 1
Truncate words
#2
Posted 17 October 2009 - 03:18 PM
Hej,
ja czegoś takiego nie znalazłem i postanowiłem stworzyć sobie w protected katalog helpers i dorzucic tam własną klasę MString z metodą trim:
I po dodaniu do config/main.php:
I w widoku przy wyswietlaniu robie:
Jeśli ktoś znajdzie jakiś błąd, albo uprości to nie mam nic przeciwko...
Mam nadzieje, że pomogłem
Pozdrawiam,
pd
ja czegoś takiego nie znalazłem i postanowiłem stworzyć sobie w protected katalog helpers i dorzucic tam własną klasę MString z metodą trim:
$charCount// - po ilu znakach uciąć...
public static function trim($string, $charCount, $endString = '...')
{
if(strlen($string)<$charCount)
return $string;
if(preg_match('/\W/',$string[$charCount]))
{
$trimedString = substr($string,0,$charCount);
if(preg_match('/\W/',$trimedString[strlen($trimedString)-1]))
{
$trimedString = substr($string,0,strlen($trimedString)-1);
}
$trimedString .= $endString;
}
else
{
$str = substr($string,0,$charCount);
for($i = strlen($str)-1; $i>=0; $i--)
{
if(preg_match('/\W/',$str[$i]))
{
$position = $i;
break;
}
}
$trimedString = substr($str,0,$position);
if(preg_match('/\W/',$trimedString[strlen($trimedString)-1]))
{
$trimedString = substr($string,0,strlen($trimedString)-1);
}
$trimedString .= $endString;
}
return $trimedString;
}I po dodaniu do config/main.php:
'import'=>array( 'application.models.*', 'application.components.*', 'application.helpers.*', )
I w widoku przy wyswietlaniu robie:
<?php echo MString::trim($tekst); ?>
Jeśli ktoś znajdzie jakiś błąd, albo uprości to nie mam nic przeciwko...
Mam nadzieje, że pomogłem
Pozdrawiam,
pd
#3
Posted 18 October 2009 - 01:17 PM
drylko ale to skomplikowane, tak chyba łatwiej:
Natomiast zmiany takie powinno się stosować w modelu, a nie w widoku.
function ttrim($str, $break, $after='...')
{
if (strlen($str) <= $break) return $str;
return substr($str,0,strpos($str,' ',$break)).$after;
}
Natomiast zmiany takie powinno się stosować w modelu, a nie w widoku.
#4
Posted 01 November 2009 - 01:22 PM
emix, on 18 October 2009 - 01:17 PM, said:
drylko ale to skomplikowane, tak chyba łatwiej:
Natomiast zmiany takie powinno się stosować w modelu, a nie w widoku.
function ttrim($str, $break, $after='...')
{
if (strlen($str) <= $break) return $str;
return substr($str,0,strpos($str,' ',$break)).$after;
}
Natomiast zmiany takie powinno się stosować w modelu, a nie w widoku.
Dla tekstu: 'ala ma kota, a kot to...', przy wywołaniu Twojej funkcji:
ttrim('ala ma kota, a kot to...', 10, '...') otrzymuje wynik: 'ala ma kota,...',
przy mojej:
trim('ala ma kota, a kot to...', 10, '...') winikiem jest: 'ala ma...'
co właśnie było planowane
#5
Posted 01 November 2009 - 05:39 PM
tego typu helpery mozna sobie szybko potworzyc korzystajac ze "zrodel" np CodeIgniter <http://codeigniter.com/> ktory ma ich calkiem sporo 
np w system/helpers/text_helper.php znajdziecie Word Limiter, Character Limiter, High ASCII to Entities, Entities to ASCII, Word Censoring Function, Code Highlighter, Phrase Highlighter i Word Wrap - praktycznie gotowe do CTRL+C i CTRL+V ;]
np w system/helpers/text_helper.php znajdziecie Word Limiter, Character Limiter, High ASCII to Entities, Entities to ASCII, Word Censoring Function, Code Highlighter, Phrase Highlighter i Word Wrap - praktycznie gotowe do CTRL+C i CTRL+V ;]
Share this topic:
Page 1 of 1

Help














