Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Ограничение кол-ва символов в выводе поиска

Ограничение кол-ва символов в выводе поиска


     04.01.2013    Все вопросы » Общие вопросы    4011

вопрос
Здравствуйте! Как можно ограничить кол-во символов в новостях на странице поиска (/index.php?do=search)?

Ответил: BR0kEN


Откройте /engine/modules/search.php, найдите:
} else $tpl->set('{favorites}',"");
и ниже добавьте:
                            if ( preg_match( "#\\{short-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                                $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'] . "" );
в шаблоне searchresult.tpl используйте тег {short-story limit="100"}, где 100 - кол-во символов.

/// UPD: вывод изображения в результатах поиска.

Найти:
$row['story'] = stripslashes($row['story']);
и ниже добавить:
                            if (stripos ( $tpl->copy_template, "{image-" ) !== false) {

                                $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 );
                    
                            }
в шаблоне searchresult.tpl используйте тег {image-X}, где X - номер изображения из shortstory.

/// UPD: ограничение кол-ва символов в title.

Если еще хотите по-извращаться, то можно сделать и ограничение на кол-во символов в title. Найти:
$row['title'] = stripslashes( $row['title'] );
и ниже добавить:
                            if ( preg_match( "#\\{title limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                                $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'] );
в шаблоне searchresult.tpl используйте тег {title limit="100"}, где 100 - кол-во символов.

4 комментария

kvick
Юзер

kvick - 4 января 2013 15:03 -

Спасибо огромное, кол-во символов ограничивает, но теперь пропали постеры к новостям.

ПафНутиЙ
Админ

ПафНутиЙ - 4 января 2013 16:54 -

Ну так и должно быть, ведь если текст обрежется посередине какого-нибудь тега - будет совсем не красиво и весь сайт разъедится.

Каков вопрос - таков и ответ. Просто помните об этом.

kvick
Юзер

kvick - 4 января 2013 17:12 -

ПафНутиЙ,
Спасибо

BR0kEN
Эксперт

BR0kEN - 4 января 2013 17:54 -

Обновил ответ.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх