вопрос
Здравствуйте! Как можно ограничить кол-во символов в новостях на странице поиска (/index.php?do=search)?
Откройте /engine/modules/search.php, найдите:
/// UPD: вывод изображения в результатах поиска.
Найти:
/// UPD: ограничение кол-ва символов в title.
Если еще хотите по-извращаться, то можно сделать и ограничение на кол-во символов в title. Найти:
} else $tpl->set('{favorites}',"");и ниже добавьте:
if ( preg_match( "#\\{short-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {в шаблоне searchresult.tpl используйте тег {short-story limit="100"}, где 100 - кол-во символов.
$count= intval($matches[1]);
$row['story'] = str_replace( "", " ", $row['story'] );
$row['story'] = strip_tags( $row['story'], "" );
$row['story'] = trim(str_replace( "", " ", str_replace( "", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['story'] ) ) ) ));
if( $count AND dle_strlen( $row['story'], $config['charset'] ) > $count ) {
$row['story'] = dle_substr( $row['story'], 0, $count, $config['charset'] );
if( ($temp_dmax = dle_strrpos( $row['story'], ' ', $config['charset'] )) ) $row['story'] = dle_substr( $row['story'], 0, $temp_dmax, $config['charset'] );
}
$tpl->set( $matches[0], "" . $row['story'] . "" );
} else $tpl->set( '{short-story}', "" . $row['story'] . "" );
/// UPD: вывод изображения в результатах поиска.
Найти:
$row['story'] = stripslashes($row['story']);и ниже добавить:
if (stripos ( $tpl->copy_template, "{image-" ) !== false) {в шаблоне searchresult.tpl используйте тег {image-X}, где X - номер изображения из shortstory.
$images = array();
preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['story'], $media);
$data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
foreach($data as $url) {
$info = pathinfo($url);
if (isset($info['extension'])) {
$info['extension'] = strtolower($info['extension']);
if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
}
}
if ( count($images) ) {
$i_count=0;
foreach($images as $url) {
$i_count++;
$tpl->copy_template = str_replace( '{image-'.$i_count.'}', $url, $tpl->copy_template );
$tpl->copy_template = str_replace( '[image-'.$i_count.']', "", $tpl->copy_template );
$tpl->copy_template = str_replace( '[/image-'.$i_count.']', "", $tpl->copy_template );
}
}
$tpl->copy_template = preg_replace( "#\[image-(.+?)\](.+?)\[/image-(.+?)\]#is", "", $tpl->copy_template );
$tpl->copy_template = preg_replace( "#\\{image-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
}
/// UPD: ограничение кол-ва символов в title.
Если еще хотите по-извращаться, то можно сделать и ограничение на кол-во символов в title. Найти:
$row['title'] = stripslashes( $row['title'] );и ниже добавить:
if ( preg_match( "#\\{title limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {в шаблоне searchresult.tpl используйте тег {title limit="100"}, где 100 - кол-во символов.
$count= intval($matches[1]);
$row['title'] = strip_tags( $row['title'] );
if( $count AND dle_strlen( $row['title'], $config['charset'] ) > $count ) {
$row['title'] = dle_substr( $row['title'], 0, $count, $config['charset'] );
if( ($temp_dmax = dle_strrpos( $row['title'], ' ', $config['charset'] )) ) $row['title'] = dle_substr( $row['title'], 0, $temp_dmax, $config['charset'] );
}
$tpl->set( $matches[0], $row['title'] );
} else $tpl->set( '{title}', $row['title'] );