Правильные числительные

javascript, 26.09.2009 Суббота, 17:58
Теги: для блога, скрипт, числа
     Меня уже давно занимала мысль о том, как некрасиво и не верно смотрятся такие записи: 100 комментарий, Ответов : 3 и так далее.
     Я нашел достаточно простой и быстрый способ решения этой проблемы. Мой скрипт поможет правильно расставить существительные в правильной форме и ваши записи превратятся в 100 комментариев и 3 ответа. Скрипт работает во всех браузерах. Пример использования скрипта можно посмотреть в моем блоге.
     Для установки скрипта, скажем, в ваш блог, поместите число комментариев в span* с соответствующим классом**. Пример:
Code
<!-- Было -->
Комментарии:<b>$COMMENTS_NUM$</b>
  <!-- Стало -->
<b><span class='comms'>$COMMENTS_NUM$</span></b>
Так же можно поступить и с другими величинами - голосами, прочтениями и так далее. Каждая из этих величин должна стоять в span с отдельным классом.
     Затем в конец страницы вставьте скрипт:
Code
<script type="text/javascript">
setNum = function(c,n){
  var a,b,i,d;
  a = document.all||document.getElementsByTagName('*');
  for(b=0;b<a.length;b++){if(new RegExp("(^|\\b)"+c+"(\\b|$)").test(a[b].className)){
  i = function(){
  d = parseFloat(a[b].innerHTML);
  if(!d){return n[2]}else
  if(d%1){return n[1]}else
  if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else
  if(/1$/.test(d)){return n[0]}else
  if(/(2|3|4)$/.test(d)){return n[1]}
  };
  a[b].innerHTML=i().replace(/\{N\}/,d||0);
  }}
  }
</script>
После того, как вы это сделали, нужно будет вызвать обработку чисел. Для каждой отдельной группы (комментарии, голоса, просмотры) она вызывается отдельно, вот таким образом:
Code
<script type="text/javascript">
// в квадратных скобках нужное существительное в 3 разных видах
// в именительном, родительном, и родительном в множественном числе
// в каждой строчке {N} заменяется на число
// не перепутайте последовательность!
   
setNum('comms',['<b>{N}</b> комментарий','<b>{N}</b> комментария','<b>{N}</b> комментариев']);
</script>
     Вот и всё! Надеюсь статья вам пригодилась.

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


ВИДЕОДЕСЕРТ

    Сегодня на десерт один из мультиков серии про животных Саймона и их приключения. Мне искренне нравятся эти короткие анимационные зарисовки. Надеюсь, понравятся и вам.:

Жми на пятую!
28, 38, 3453
№38
[sayto]Евгений[/sayto], http://jsfiddle.net/theegorfrom1994/f5hwr/
Ответ: Спасибо.
№37
Скрипт замечателен, гибок и пластичен. Благодарю.
№36
Aleko, вставил на страницу - не работает =(

Что-то еще что ли нужно сделать?

Ответ: Включить мозг и прочитать страницу сначала. Не парьтесь, у вас всё равно не получится.
№35
А да, спасибо, как раз искал именно это)
№34
А вопрос, в {N} прописываешь одно число, и так для каждого числа свое окончание или как? или можно написать промежуток
Ответ: Вам в {N} вообще ничего писать не нужно. это делает программа. Читайте пост внимательней.
№33
Нашел ошибку, и дело не в криворукости, а в том, что на странице материала каталога статей неработает код $COMMENTS_NUM$. Точнее он работает, но не тогда когда заключен в span. Нужно вместо $COMMENTS_NUM$ вписать $COM_NUM_ENTRIES$
Ответ: Ну тоже в каком то смысле криворукость, хотя уже и не ваша.
№32
На странице материала каталона статей нерабонает с комментариями. Всегда пишет "0 комментариев". А в новостях всё нормально. В чём причина?
Ответ: Исключительно в кривости ваших рук.
№31
[sayto]art-drs[/sayto], [sayto]Mr. Frost[/sayto], скрипты нужно вставлять в конец шаблона "Страницы сайта". Сделайте так, и будет вам счастье :)
ваше имя
    © Блог StudioAD.ru 2012 год нашей эры. Не все права защищены... Копирование любой информации и материалов с обратной ссылкой приветствуется! Хостинг от uCoz. Если вам пришлись по душе материалы моего блога - подпишитесь на RSS дабы получать обновления незамедлительно! Я рад что вы читаете и комментируете мои экзерсисы, приятного времяпрепровождения.
Все о ламинате на сайте производителя.
Таиландские секреты туры и отдых в тайланде тайцы будут рады.
1 2 3 4 »