truncate / shorten caption for random block
|
whodah
![]()
Joined: 2003-05-17
Posts: 96 |
Posted: Sun, 2003-05-18 00:09
|
|
some of my captions get rather long and can make the formatting of the page that the random block is on a bit funky. i saw one post in here to do a simple truncation of a caption for random block. i took it a bit further: this will truncate the caption to whatever you set $whonumchars to (in my case, 75 characters). but, it'll find the last 'complete word' and truncate it there rather than truncating mid-word. for instance, if you had: and truncated on the 14th character, you'd get: this will truncate instead on the 'last complete word' in this case, 'picture' so it would truncate to: i dunno, maybe i'm being a big picky :P at any rate, it'll also add a 'read more' link to it which simply links to the album that the pic is in. if you want it, in block-random.php or gallery_random.php replace:
if ($caption) {
$row['content'] .= "<br><center>$caption</center>";
}
with:
if ($caption) {
/* Who Dah? mofified the next line to only show the first $whonumchars characters */
/* as some of my photo descriptions can get.. a bit.. long! :> */
$whonumchars = 75;
if (strlen($caption) > $whonumchars) {
$whodah_lastspace = strpos($caption," ");
if ($whodah_lastspace === false) {
// no spaces found... don't need to truncate on a 'perfect word'...
$caption = substr($caption,0,$whonumchars)."... <i><a href=\"".makeAlbumUrl($album->fields["name"])."\">read more</a></i>";
}
else {
$caption = substr($caption,0,$whonumchars);
$whoarray = explode(' ', $caption);
$wholastword = array_pop($whoarray);
$caption = implode(' ', $whoarray)."... <i><a href=\"".makeAlbumUrl($album->fields["name"])."\">read more</a></i>";
}
}
$row['content'] .= "<br><center>$caption</center>";
}
enjoy! |
|


Posts: 3474
A regexp might be useful here. I'm thinking something along the lines of:
/^.{75}.*?\b/So you'd have:
if ($caption) { preg_match("/^.{75}.*?\b/", $caption, $newcaption); $row['content'] .= "<br><center>$newcaption[0]</center>"; }Not sure if it's faster, but it's a lot shorter! ;)
-Beckett (
)
Posts: 3474
Oops... mine doesn't have the "read more" link... but you can just test with strlen() to decide whether to print that.