Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Хранение и вывод новости


Автор: BIG BROTHER 13.1.2006, 23:20
Есть текст новости. Идея такова - есть 2 "версии" новости - короткая и полная. Короткую выводим в списке новостей, полная - при клике на "Подробнее"

Собственно проблема, не проблема, а загвоздка в том как хранить эти 2 "версии". Все это усугубляется тем, что текст новости - HTML код.

Раньше делал так: 2 поля в базе - полная(вся новость минус начало, что ушло в короткую) и короткая, а при постинге новости делал вот что:
Код

function get_short_text($text, $max_symbols) {
       if(strlen($text)<$max_symbols) return $text;
       $text = substr($text, 0, $max_symbols);
       if(strrpos($text, "\n") !== FALSE) { $text = substr($text, 0, strrpos($text , "\n")+1);  }
       elseif(strrpos($text, ".") !== FALSE) { $text = substr($text,0, strrpos($text , ".")+1);  }
       elseif( strrpos( $text , " " ) !== FALSE ) { $text = substr($text, 0, strrpos($text," ")); }
       return $text;
       }


Но при таком подходе может происходить "разрыв" HTML тегов и открывающий оказывается в короткой, а закрывающий в конце. При показе полной версии это еще ничего, а вот в списке новостей дизайн всей страницы может просто сорвать.

Подскажите ваши соображения по этому вопросу...

Автор: TIGERоX 14.1.2006, 01:27
Лично я храню самари в отдельном поле а содержание в др.
в конце ссылка читать далее и открываем содержание

Автор: Mal Hack 14.1.2006, 01:41
Хранить одну большую версию, а при выводе резать.
Я вообще сторонник такой политики.
Храним и хтмл код и всю новость в бб-кодах. Режем на главной из бб кодов, выводим полную из html.

Автор: BIG BROTHER 14.1.2006, 17:04
У меня в принципе нет BB-кодов - у меня приходит HTML прям из формы.

Так как быть с разрывом тегов при резке на короткую и полную? из короткой пролностью убрать HTML код? Но это помоему не совсем правильно

Автор: Mal Hack 14.1.2006, 19:03
Читаем полную новость, режем весь html, обрезаем текст и показываем.
Если структура текста - имеет какие-то шаблонные формы, то можно отталкиваться от нее.

Автор: BIG BROTHER 15.1.2006, 12:42
Цитата(Mal Hack @ 14.1.2006, 19:03 Найти цитируемый пост)

Если структура текста - имеет какие-то шаблонные формы, то можно отталкиваться от нее.

Что ты имеешь ввиду?

Автор: Mal Hack 15.1.2006, 12:47
Ну к примеру резать первый абзац по <p></p>

Автор: Illuminaty 15.1.2006, 15:00
Я делаю так:
При вводе текста делаю два поля: одно для препросмотра, другое для остального текста. Все хранится в разных полях таблицы. При просмотре всего текста - соединяем содержимое двух полей в один текст.
Если резать текст по какому-нибудь критерию, можно нарушить логику текста. Прервать изложение на полуслове, к примеру. Да пользователи при таком вводе организуют текст более грамотно. Выносят содержание новости в начало, что облегчает пользователям сайта ориентироваться в текстах.

Автор: IZ@TOP 16.1.2006, 02:39
Мне нравится вариант Mal-Hack'a. В данный момент сам юзаю на сайте несколько вариантов. В некоторых случаях достаточно вырезать по определенному количетву слов.

Автор: Mal Hack 16.1.2006, 19:25
Цитата(IZ@TOP @ 16.1.2006, 02:39 Найти цитируемый пост)

В некоторых случаях достаточно вырезать по определенному количетву слов.
Я ообще делал так. Резал по абзацам, которые укладывались в энное кол-во символов, затем по предложениям, затем по словам...

Автор: IZ@TOP 16.1.2006, 22:30
Mal Hack, в идеале конечно следует делать интересное описание для чего-то, а основной текст отдельно. Так сказать вступление. Но тут играет немаловажную роль что порой текста идут без этих самых вступлений а юзерам очень лень их писать...

Автор: BIG BROTHER 16.1.2006, 22:36
Цитата(Mal Hack @ 16.1.2006, 19:25 Найти цитируемый пост)

Я ообще делал так. Резал по абзацам, которые укладывались в энное кол-во символов, затем по предложениям, затем по словам...

А ты глянь функцию в первом сообщении моем...ничего не узнаешь? ;)

Цитата(IZ@TOP @ 16.1.2006, 22:30 Найти цитируемый пост)

Но тут играет немаловажную роль что порой текста идут без этих самых вступлений а юзерам очень лень их писать...

Вот именно по этому и не хочу так делать

Можно конечно просто из всего текста вырезать начало и очищать от тегов. Но вот тут встает другой вопрос, а именно определение есть-ли у новости вообще продолжение и стоит-ли выводить ссылку "Подробнее", а то вдруг это коротенькая заметка. И получиться что короткая от полной отличается лишь тегами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)