Вывод количества материала (статей и пр)

InstantCMS 2.X
#1 26 декабря 2021 в 10:59

Имеется решение Как вывести количество новостей? / Компоненты — InstantCMS Community 

Но оно меня не устраивает по понятным причинам.Изображение

Требуется вывести вместо иконок папок количество умерших той или иной категории.

(Алфавит -это категории как и участники войны — фронтовики)
И поменять местами типа  А — 320 Б-210....

#2 27 декабря 2021 в 20:15

Точнее говоря -количество материалов в категории.

Добавлено спустя 1 час

Изображение

решение найдено методом тыка :-)))
Файл categories.tpl.php

  1. <?php if($cover_preset){ ?>
  2. <div class="d-flex justify-content-between flex-wrap mb-n3 mb-md-n4">
  3. <?php foreach($cats as $item){ ?>
  4. <div class="mb-3 mb-md-4<?php if ($item['is_hidden']) { ?> d-none<?php } ?><?php if ($item['css_classes']) { ?> <?php echo implode(' ', $item['css_classes']); ?><?php } ?>">
  5. <div class="card border-0">
  6. <?php if($item['img_src']){ ?>
  7. <a class="d-block overflow-hidden rounded-lg" href="<?php echo href_to($ctype_name, $item['slug']); ?>">
  8. <img class="d-block img-fluid" src="<?php echo $item['img_src']; ?>" alt="<?php html($item['title']); ?>">
  9. </a>
  10. <?php } ?>
  11. <div class="card-body<?php if(!$item['img_src']){ ?> p-0<?php } else { ?> px-0 pb-0 pt-2<?php } ?>">
  12. <h3 class="h5 m-1">
  13. <a class="btn btn-outline-primary shadow p-2 mb-2" href="<?php $cat_count = cmsCore::getModel('content')
  14. ->joinLeft('con_'.$ctype_name.'_cats', 'ac', 'i.category_id = ac.id')->filterGt('ac.ns_left', $item['ns_left']-1)->filterLt('ac.ns_right', $item['ns_right']+1)
  15. ->getContentItemsCount($ctype_name); echo $url; ?>"><span>
  16. <?php echo $item['title'].' - '.$cat_count.''; ?></span></a></h3>
  17. </div>
  18. </div>
  19. </div>
  20. <?php } ?>
  21. </div>
  22. <?php } else { ?>
  23. <ul class="icms-content-subcats list-unstyled my-n2">
  24.  
  25. <?php $last_level = 0; ?>
  26.  
  27. <?php foreach($cats as $item){ ?>
  28.  
  29. <?php for ($i=0; $i<($last_level - $item['ns_level']); $i++) { ?>
  30. </li></ul>
  31. <?php } ?>
  32.  
  33. <?php if ($item['ns_level'] <= $last_level) { ?>
  34. </li>
  35. <?php } ?>
  36.  
  37. <li class="my-2<?php if ($item['is_hidden']) { ?> d-none<?php } ?>">
  38.  
  39. <a class="h5<?php if ($item['is_active']) { ?> text-dark<?php } ?>" href="<?php echo href_to($ctype_name, $item['slug']); ?>">
  40. <span class="text-warning"><?php html_svg_icon('solid', 'folder'); ?></span>
  41. <span><?php html($item['title']); ?></span>
  42. </a>
  43.  
  44. <?php if ($item['childs_count']) { ?><ul class="list-unstyled pl-3"><?php } ?>
  45.  
  46. <?php $last_level = $item['ns_level']; ?>
  47.  
  48. <?php } ?>
  49.  
  50. <?php for ($i=0; $i<$last_level; $i++) { ?>
  51. </li></ul>
  52. <?php } ?>
  53. <?php } ?>

Как-то так...

#3 28 декабря 2021 в 00:48

Надеюсь, никто не воспользуется вашим кодом. Это перебор, делать по запросу в базу на каждую категорию. Это приличная нагрузка.

На одном сайте делал в базе в таблице категорий поле со счетчиком. И с помощью задачи планировщика считал раз в час количество записей.

#4 28 декабря 2021 в 11:40

Конечно нет смысла так нагружать сервер, но счетчик я нашел на этом форуме. И еще -когда я закончу заполнять базу (еще примерно 2500 тыс человек) счетчик мне уже не понадобится-будет достаточно вручную прописать количество.погибших в отдельном модуле. И вставку кода со счетчиком можно будет убрать.Кстати -в моем случае большой нагрузки не будет-сайт будут посещать от силы 50-100 человек в сутки из-за его специфики.
Но я бы не отказался, если бы кто то помог мне решить эту проблему другим путем.

Поэтому тема остается пока открытой.

Добавлено спустя 9 часов

Конечно нет смысла так нагружать сервер, но счетчик я нашел на этом форуме. И еще -когда я закончу заполнять базу (еще примерно 2500 тыс человек) счетчик мне уже не понадобится-будет достаточно вручную прописать количество.погибших в отдельном модуле. И вставку кода со счетчиком можно будет убрать.Кстати -в моем случае большой нагрузки не будет-сайт будут посещать от силы 50-100 человек в сутки из-за его специфики.
Но я бы не отказался, если бы кто то помог мне решить эту проблему другим путем.

Поэтому тема остается пока открытой.

AlexV

Как вывести количество материала для меню «Категории» для InstantCMS 2? / Разработка дополнений — InstantCMS Community — Страница №4

Добавлено спустя 55 минут

К сожалению При дополнительной проверке обнаружил, что в коде закрались ошибки и совсем непонятно, что он считает. И ещё-при переходе по категориям ничего не меняется.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.