PDA

Просмотр полной версии : возможности crop


Tod
06.10.2006, 16:36
В общем, для отображения результатов поиска выводятся как бы отрывки текста.
20.field = short//bodytext
20.crop = -250
Так вот оно так дико его отрезает, со всем форматированием.. и если еще с самого начала брать текст, то идут заголовки и смотрится ну просто дико.
Можно ли как-то настроить crop чтобы оно выводило по другому? ну код хтмл например или тексты без форматирования вообще. Есть ли в TS нечто подобное?

Valery Romanchev
06.10.2006, 17:56
наверное стоит свою Php функцию написать и подцепить ее через Ts... и в ней уже что угодно делать

Tod
06.10.2006, 18:43
А с помощью там какого-то HTMLparser ничего сделать нельзя? может как-то тэги поубирать из текста просто... ? или точно нет?))

Valery Romanchev
06.10.2006, 18:51
А с помощью там какого-то HTMLparser ничего сделать нельзя? может как-то тэги поубирать из текста просто... ? или точно нет?))
Если свою функцию, то может пример наведете как что куда подцепить? (если не слочно)

// Correction to long lines of HTML code
page.includeLibs.user_textWrap = fileadmin/templates/design/user_textWrap.php
page.stdWrap.preUserFunc = user_textWrap

<?
//
// see http://ru.php.net/manual/en/function.wordwrap.php
//

function user_textWrap($tstr,$conf ) {

$len = 75;
$br = "\r\n";
$strs = explode($br,$tstr);
$retstr = "";
foreach ($strs as $str) {
$str=trim($str);
if (strlen($str)>75)
$retstr .= better_wordwrap($str,75,"\r\n") . $br;
else $retstr .=$str . $br;
}

/*
$strs = explode($br,$retstr);
$retstr = "";
$j=0;
foreach ($strs as $str) {
if (strlen($str)>75)
$retstr .= wrap_tags($str) . $br;
//$retstr .=$str . $br;
//$retstr .=$str . $br;
else
$retstr .=$str . $br;
$j++;
}
//echo $j;
*/

return $retstr;
}


function wrap_tags($str) {
$i=0;
$tag_close = '>';

$str_new='';
$str_remains=$str;

while (strlen($str_remains) > 90) {
//echo $i."<br>". htmlspecialchars($str_remains)."<br><br>";
$pos = strpos($str_remains, $tag_close, 75); //
$str_new .= substr($str_remains,0,$pos+1)."\r\n";
//echo "<br>". htmlspecialchars($str_new)."<br><br><br>";
$str_remains = substr($str_remains,$pos+1,strlen($str_remains));
$i++;
}
$str_new .=$str_remains;
return $str_new;
}


function better_wordwrap($str,$cols,$cut){
$tag_open = '<';
$tag_close = '>';
$count = 0;
$in_tag = 0;
$str_len = strlen($str);
$segment_width = 0;

for ($i=1 ; $i<=$str_len ; $i++){
if ($str[$i] == $tag_open) {
$in_tag++;
} elseif ($str[$i] == $tag_close) {
if ($in_tag > 0) {
$in_tag--;
}
} else {
if ($in_tag == 0) {
$segment_width++;
if (($segment_width > $cols) && ($str[$i] == " ")) {
$str = substr($str,0,$i).$cut.substr($str,$i+1,$str_len-1);
$i += strlen($cut);
$str_len = strlen($str);
$segment_width = 0;
}
}
}
}
return $str;
}


?>

Pavel Antonov
07.10.2006, 16:36
А с помощью там какого-то HTMLparser ничего сделать нельзя? может как-то тэги поубирать из текста просто... ? или точно нет?))
Убрать весь HTML очень просто: stdWrap.stripHtml = 1

А вот сделать crop и оставить HTML - это уже задача не простая.

Tod
07.10.2006, 18:35
валерий, функцию подцепить так и не удалось... прописал как ты говорил - вылездла какая-то ошибка, да и работать в Ts она упорно отказывалась... в общем, проблема решена и разбираться где именно я ошибся при подключении пхп функции буду в другой раз:)
павел, спасибо! это именно то, что нужно!!!