|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии Определение категории с наибольшим количеством новостей |
Определение категории с наибольшим количеством новостей |
Стоит задача определения одной из пяти категорий с наибольшим количеством новостей в ней опубликованном. Каким образом к этому вопросу подступиться?
Конечная задача стоит такая: нужно определить "Категорию-победительницу" и вывести на главную страницу название "Победительницы". Каким образом это можно сделать? |
Цитата (Selena) только скриптами. Ага, и думается мне, интереснее всего будет использовать системную переменную $CATEGORIES_JSON$ Добавлено (20 Сен 2013, 18:31:24) Код <script> var cat = $CATEGORIES_JSON$.sort(function(obj1,obj2){ return obj2.entries-obj1.entries }); document.write('<a href="'+cat[0].url+'" class="firstPlace">'+cat[0].name+' <span>'+cat[0].entries+'</span></a>'); </script> Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Пятница, 20 Сен 2013, 18:25:53
|
Head-Mad спасибо. Попробовал подставить, вроде выводит одну из категорий с действительно большим количеством сообщений в ней. Но вопрос в моей некомпетентности в скриптах. Если не затруднит обозначьте в скрипте, каким образом проставить все пять категорий новостей и выбирать из 5ти.. Сейчас в вашем данном варианте скрипт выбирает из скольки категорий?
Что делает вот эта функция "sort(function(obj1,obj2){ return obj2.entries-obj1.entries " и нужно ли в нее подставлять чтобы добрать до 5-ти категорий? Добавлено (20 Сен 2013, 18:56:09) |
Цитата (briks400) Что делает вот эта функция Эта функция сортирует массив всех категорий модуля по убыванию. Ничего там подставлять не надо. или нужно отобразить все категории в порядке убывания(по количеству материалов)? или как, или что? Можешь забрать этот код и вставить его себе, сам знаешь куда.
|
Если этот скрипт сортирует все категории, то больше ничего не надо тогда , первая задача выполнена. Спс огромное. (это чтобы понять).
А вот вторая задача, это скрипт, в котором нужно уже отдельно без самой значимой категории - "победительницы" отобразить оставшиеся (для них будет отдельный стиль задан) с указанием количества нехватающего для победы над "Победительницей" . Т.е например "Для победы ...... категории не хватает ..... записей". Добавлено (20 Сен 2013, 19:15:11) |
немножечко допилил:
Код <div class="categories"> <script> var cat = $CATEGORIES_JSON$.sort(function(obj1,obj2){ return obj2.entries-obj1.entries }); var firstEnt = cat[0].entries; $(cat).each(function(i){ if (i == 0){ document.write('<a href="' + cat[i].url + '" class="firstPlace">' +cat[i].name + ' <span>' + cat[i].entries + '</span></a>'); }else{ var thisEnt = cat[i].entries; var differ = firstEnt - thisEnt; document.write('<a href="' + cat[i].url + '">' +cat[i].name + ' <span>-' + differ + '</span></a>'); } }) </script> </div> Теперь у первого пункта класс .firstPlace А в остальных пунктах показывает недостающее количество постов до первого места Можешь забрать этот код и вставить его себе, сам знаешь куда.
|
Смотрите. Попробовал.
1. Категории все выходят в одну строку (их бы разделителем в столбик поставить). 2. Как после названия категории и перед цифрой отставания поставить слово "Отстает на", а после цифры слово "сообщений)? Добавлено (20 Сен 2013, 20:41:50) |
Код <div class="categories"> <script> var cat = $CATEGORIES_JSON$.sort(function(obj1,obj2){ return obj2.entries-obj1.entries }); var firstEnt = cat[0].entries; $(cat).each(function(i){ if (i == 0){ document.write('<a href="' + cat[i].url + '" class="firstPlace" style="display:block">' +cat[i].name + ' <span>' + cat[i].entries + '</span></a>'); }else{ var thisEnt = cat[i].entries; var differ = firstEnt - thisEnt; document.write('<a href="' + cat[i].url + '" style="display:block">' +cat[i].name + ' <span>(отстает на ' + differ + ' сообщений</span></a>'); } }) </script> </div> это уже можно было решить на css. Можешь забрать этот код и вставить его себе, сам знаешь куда.
|
Все работает. Попробую решить со словом "победитель" с помощью CSS.
Благодарен за помощь. Добавлено (20 Сен 2013, 21:09:04) --------------------------------------------- Не получается с помощью CSS. Надо: "Наш победитель ......... (категория).... имеет ...(количество)... сообщений". Такое не сделать с помощью CSS. Добавлено (20 Сен 2013, 22:19:58) Сообщение отредактировал briks400 - Пятница, 20 Сен 2013, 21:12:43
|
| |||
| |||