• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Определение категории с наибольшим количеством новостей
briks400
Сообщений: 14
Репутация: 0

Сообщение # 1 | 17:29:14
Стоит задача определения одной из пяти категорий с наибольшим количеством новостей в ней опубликованном. Каким образом к этому вопросу подступиться?
Конечная задача стоит такая: нужно определить "Категорию-победительницу" и вывести на главную страницу название "Победительницы".

Каким образом это можно сделать?
Selena
Сообщений: 15657
Репутация: 1100

Сообщение # 2 | 17:54:56
briks400, только скриптами.

Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 3 | 18:31:24
Цитата (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
briks400
Сообщений: 14
Репутация: 0

Сообщение # 4 | 18:56:09
Head-Mad спасибо. Попробовал подставить, вроде выводит одну из категорий с действительно большим количеством сообщений в ней. Но вопрос в моей некомпетентности в скриптах. Если не затруднит обозначьте в скрипте, каким образом проставить все пять категорий новостей и выбирать из 5ти.. Сейчас в вашем данном варианте скрипт выбирает из скольки категорий?
Что делает вот эта функция "sort(function(obj1,obj2){
return obj2.entries-obj1.entries " и нужно ли в нее подставлять чтобы добрать до 5-ти категорий?

Добавлено (20 Сен 2013, 18:56:09)
---------------------------------------------
И еще вопрос:
Можно вас попросить дать еще скрипт, когда будет выводиться список из категорий новостей, а к каждому названию категории рядом выводится количество записей, не хватающих для победы над выигрывшей категорией.

Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 5 | 18:59:34
Цитата (briks400)
Что делает вот эта функция

Эта функция сортирует массив всех категорий модуля по убыванию. Ничего там подставлять не надо. или нужно отобразить все категории в порядке убывания(по количеству материалов)? или как, или что?

Можешь забрать этот код и вставить его себе, сам знаешь куда.
briks400
Сообщений: 14
Репутация: 0

Сообщение # 6 | 19:15:11
Если этот скрипт сортирует все категории, то больше ничего не надо тогда , первая задача выполнена. Спс огромное. (это чтобы понять).
А вот вторая задача, это скрипт, в котором нужно уже отдельно без самой значимой категории - "победительницы" отобразить оставшиеся (для них будет отдельный стиль задан) с указанием количества нехватающего для победы над "Победительницей" . Т.е например "Для победы ...... категории не хватает ..... записей".

Добавлено (20 Сен 2013, 19:15:11)
---------------------------------------------
и так по порядку столбиком должны отобразится более мелким шрифтом все оставшиеся категории (их у меня всего 5).

Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 7 | 20:26:21
немножечко допилил:
Код
<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
А в остальных пунктах показывает недостающее количество постов до первого места

Можешь забрать этот код и вставить его себе, сам знаешь куда.
briks400
Сообщений: 14
Репутация: 0

Сообщение # 8 | 20:41:50
Смотрите. Попробовал.
1. Категории все выходят в одну строку (их бы разделителем в столбик поставить).
2. Как после названия категории и перед цифрой отставания поставить слово "Отстает на", а после цифры слово "сообщений)?

Добавлено (20 Сен 2013, 20:41:50)
---------------------------------------------
4. А перед "победившей" категорией поставить слово "Пообедитель"

Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 9 | 20:44:41
Код
<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.

Можешь забрать этот код и вставить его себе, сам знаешь куда.
briks400
Сообщений: 14
Репутация: 0

Сообщение # 10 | 22:19:58
Все работает. Попробую решить со словом "победитель" с помощью CSS.
Благодарен за помощь.

Добавлено (20 Сен 2013, 21:09:04)
---------------------------------------------
Не получается с помощью CSS. Надо:
"Наш победитель ......... (категория).... имеет ...(количество)... сообщений".

Такое не сделать с помощью CSS.

Добавлено (20 Сен 2013, 22:19:58)
---------------------------------------------
Все . Доделал. Все работает. Появилась другая проблема.
Если данные устанавливаются в длинные блок, то ссылка (клик) срабатывает даже на пустом месте справа и слева от строк с текстом (названием категорий и количеством) на любом расстоянии в этом блоке. Как "обрезать кликабельность" строки строго по символам текста каждой категории?

Сообщение отредактировал briks400 - Пятница, 20 Сен 2013, 21:12:43
  • Страница 1 из 1
  • 1
Поиск:
Telegram
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!