IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Резка текста, read more (https://www.imho.ws/showthread.php?t=103929)

alender 21.05.2006 12:31

Резка текста, read more
 
Как сделать ссылку "read more", в постах блога, чтобы тексты, на главной странице, были видны не целиком, а только первым параграфом?

Face 21.05.2006 14:50

Есть несколько вариантов:
1. Хранить в базе 2 вида новости: полную и краткую. Если есть полная - показывать ссылку read more. Если нет - не показывать. При клике на read more показывать только полную новость.
2. Использовать [read_more] в тексте новости, по которой будет отделять краткая новость от полной.
PHP код:

<?
preg_match("/(.*)(\\[read_more\\])(.*)/is",$text,$match);
if (isset($match[2])) {
    // Показываем $match[1] и ссылку read more
} else {
    // Показываем $text без ссылки
}
?>

При клике на read more, необходимо также удалить [read_more] из текста:
PHP код:

$text=str_replace("[read_more]","",$text); 


alender 21.05.2006 18:30

Face,
можешь подробней объяснить.
В моем в блоге, тексты, большие по объему. Хочется уменьшить их до 2-3 первых предложений, на главной странице. А полный текст, читать при клике на комментировать или "read more" как у других.
Таг [read_more] пробывал, не работает.

Face 21.05.2006 21:19

Необходимо чтобы показывалось допустим только 3 предложения или как то указывать откуда обрезать текст?
Вот пример работы скрипта с [read_more]:
PHP код:

<?
$text="Есть несколько вариантов:
1. Хранить в базе 2 вида новости: полную и краткую. Если есть полная - показывать ссылку read more. Если нет - не показывать. При клике на read more показывать только полную новость.[read_more]
2. Использовать read_more в тексте новости, по которой будет отделять краткая новость от полной.";
if (@$_GET['act']=='read_more') {
  $text=str_replace("[read_more]","",$text);
  echo $text;
} else {
    preg_match("/(.*)(\\[read_more\\])(.*)/is",$text,$match);
    if (isset($match[2])) {
        echo $match[1]."<br><a href='?act=read_more'>Читать дальше</a>";
    } else {
        echo $text;
    }
}
?>


Naked 21.05.2006 22:08

Цитата:

alender:
Таг [read_more] пробывал, не работает.
[read_more] - это не тэг в данном случае:) И вообще, то, что реализует Face пишется на php, т.е. должен сервер поддерживать....
А так есть несколько путей реализации:
1. Если есть пхп:
а) Храним кусочек текста, и весь текст (неважно где), у обоих текстов должно быть какое-то уникальное имя (id например), соответственно на главной странице показываем кусочек, при нажатии на ссылку показываем полный текст, узнаем, что показывать по уникальному id....
б) Можно хранить весь текст, но тогда после краткой части нужно написать какой-нибудь указатель на конец краткой части ([read_more] например), при выводе краткого текста выводим текст только до указателя, при выводе полного текста просто убираем этот указатель (как написано в постах выше).
2. Без пхп можно реализовать на JavaScript'е тоже самое тока текст уже нужно будет хранить в переменных яваскрипта, а не в базах, как это возможно на пхп. А система та же, что и в пхп:)

Face 21.05.2006 22:19

Об отсутствии PHP я и не подумал :) Вот реализация на JavaScript:
Код HTML:

<script>
function view_note(note) {
    if (document.getElementById(note).style.display == "none"){
          document.getElementById(note).style.display="block";
    } else {
          document.getElementById(note).style.display="none";
    }
    return;
}
</script>
Текст первый<br>
<a href=# onclick=view_note('text1')>Читать дальше...</a>
<div style='display:none' id='text1'>Первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст, первый текст</div><br>
Текст второй<br>
<a href=# onclick=view_note('text2')>Читать дальше...</a>
<div style='display:none' id='text2'>Второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст, второй текст</div>



Часовой пояс GMT +4, время: 09:47.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.