Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Кнопка "Далее" для продолжения статьи

#1 r0mZet

r0mZet
  • Модератор
  • 961 сообщений
  • Репутация: 107
0

Отправлено 07 Январь 2014 - 23:47

Как технически реализовывается такой момент: Имеется статья на странице, но она очень длинная и хочется сделать из нее превью в виде первого абзаца, а последующее разворачивается нажатием кнопки ДАЛЕЕ. ???
P/S: не допуская переход на новую страницу. Сайт на PHP

 

 

  • 0

#2 GVA

GVA
  • Супермодератор
  • 998 сообщений
  • Репутация: 201

Отправлено 07 Январь 2014 - 23:58

<p class="myClass">
	Текст который будет обрезаться при достижении заданного максимального количества символов в нем.
</p>

В <head> подгружаем сначала jQuery, а потом сам плагин:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.truncatable.js"></script>

И инициализируем плагин, указав класс для которого будем его использовать:
$(function {
	$(".myClass").truncatable();
});

Опционально можно указать количество символов при превышении которого, текст будет скрыт. По умолчанию это количество символов равно 100.
$('.myClass').truncatable({ limit: 200, more: '.....', less: true, hideText: '[скрыть]' });

вот сам скрипт jquery.truncatable.js


(function($){$.fn.truncatable=function(options){var defaults={limit:100,more:'...',less:false,hideText:'[read less]'};var options=$.extend(defaults,options);return this.each(function(num){var stringLength=$(this).html().length;if(stringLength>defaults.limit){var splitText=$(this).html().substr(defaults.limit);var splitPoint=splitText.substr(0,1);var whiteSpace=new RegExp(/^\s+$/);for(var newLimit=defaults.limit;newLimit<stringLength;newLimit++){var newSplitText=$(this).html().substr(0,newLimit);var newHiddenText=$(this).html().substr(newLimit);var newSplitPoint=newSplitText.slice(-1);if(whiteSpace.test(newSplitPoint)){var hiddenText='<span class="hiddenText_'+num+'" style="display:none">'+newHiddenText+'</span>';var setNewLimit=(newLimit-1);var trunkLink=$('<a>').attr('class','more_'+num+'');$(this).html($(this).html().substr(0,setNewLimit)).append('<a class="more_'+num+'" href="#">'+defaults.more+'<a/> '+hiddenText);$('a.more_'+num).bind('click',function(){$('span.hiddenText_'+num).show();$('a.more_'+num).hide();if(defaults.less==true){$('span.hiddenText_'+num).append('<a class="hide_'+num+'" href="" title="'+defaults.hideText+'">'+defaults.hideText+'</a>');$('a.hide_'+num).bind('click',function(){$('.hiddenText_'+num).hide();$('.more_'+num).show();$('.hide_'+num).empty();return false})}});newLimit=stringLength}}}})}})(jQuery);


  • 1

#3 Светозар

Светозар
  • Пользователь
  • 62 сообщений
  • Репутация: 3

Отправлено 08 Январь 2014 - 21:55

Как технически реализовывать такой момент: Имеется статья на странице, но она очень длинная и хочется сделать из нее превью в виде первого абзаца, а последующее разворачивается нажатием кнопки ДАЛЕЕ. ???
P/S: не допуская переход на новую страницу. Сайт на PHP


Чисто из любопытства, почему не допускается переход на новую страницу? И как это связанно с тем что сайт на PHP?
Представьте, что у вас 1000 новостей. На каждом будет загружаться этот скрипт, который в совокупности создаст не малую нагрузку. Куда большую чем если вы сделаете полную новость на другой странице!

НУ, а если у вас статья в одной "строке(бд)" то можно разделить скажем тегом [next] сделав метод, проверяющий на наличии данного сочетания символов будет выводить

<a href="url_next">title_next_url</a>


  • 0

#4 r0mZet

r0mZet
    Topic Starter
  • Модератор
  • 961 сообщений
  • Репутация: 107

Отправлено 08 Январь 2014 - 22:23

Потому что переход на новую страницу не желателен.
Как это связано с тем что сайт на РНР ? - не умничайте понапрасну, если Вы знаете больше меня то предложите пути решения я был бы Вам очень признателен и Ваш авторитет вырос бы в моих глазах.
  • 0

#5 GVA

GVA
  • Супермодератор
  • 998 сообщений
  • Репутация: 201

Отправлено 09 Январь 2014 - 01:16

r0mZet, надеюсь мой вариант вам помог )
Однако недостаток в виде обреза слова ровно по достижении 200 (или сколько вы укажете символов) можно заменить троеточием. ..[..]

Сообщение отредактировал GVA: 09 Январь 2014 - 01:17

  • 0

#6 r0mZet

r0mZet
    Topic Starter
  • Модератор
  • 961 сообщений
  • Репутация: 107

Отправлено 09 Январь 2014 - 14:45

r0mZet, надеюсь мой вариант вам помог )
Однако недостаток в виде обреза слова ровно по достижении 200 (или сколько вы укажете символов) можно заменить троеточием. ..[..]

Да, спасибо!
  • 0

#7 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 10 Январь 2014 - 10:48

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

Простите, нагрузку на что? На браузер каждого пользователя?
Даже, если и 10000 новостей, они ведь не будут запрошены все одновременно :)
  • 1
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.



Оформление форума – IPBSkins.ru