Как вывести количество материала для меню "Категории" для InstantCMS 2?

#1 22 февраля 2015 в 21:27
Здравствуйте!

Подскажите пжл как вывести количество материалов для статей, постов и т.д. в меню "Категории" InstantCMS 2?

Как в первой ветке:

#2 14 июля 2017 в 10:45
UP
тоже интересует данная тема
#3 17 декабря 2017 в 14:52
Тоже интересен этот вопрос
#4 18 декабря 2017 в 00:05
По аналогии с этим:
instantcms.ru/forum/thread28671-1.html#277480

В файле \templates\default\controllers\content\category_view.tpl.php найдите строку
  1. echo href_to($base_url . (($dataset && $is_ds_view && !$is_ds_hide) ? '-'.$dataset : ''), $c['slug']); ?>"><?php echo $c['title']; ?></a>
И замените на это:
  1. <a href="<?php $cat_count = cmsCore::getModel('content')->join('con_articles_cats', 'ac', 'i.category_id = ac.id')->filterEqual('category_id', $c['id'])->filterOr('ac.parent_id = i.category_id')->getCount('con_articles', 'id'); echo href_to($base_url . (($dataset && $is_ds_view && !$is_ds_hide) ? '-'.$dataset : ''), $c['slug']); ?>"><?php echo $c['title'].' ('.$cat_count.')'; ?></a>
Результат:
#5 18 декабря 2017 в 00:25
Ris, Что-то не так. Выдает 503
#6 18 декабря 2017 в 00:31

Что-то не так.

Capitan
Однозначно что-то не так.
#7 18 декабря 2017 в 11:41
\templates\default\controllers\content\widgets\categories\categories.tpl.php замените на это
  1. <div class="widget_content_tree">
  2.  
  3. <ul>
  4. <?php
  5. $model = cmsCore::getModel('content');
  6. $item_count = $model->getContentItemsCount($ctype_name);
  7. ?>
  8. <li <?php if (empty($active_cat['id'])) { ?>class="<?php echo 'active'; ?>"<?php } ?>>
  9. <a class="item" href="/<?php echo $ctype_name ?>">Все <span class="item_count"><?php echo $item_count; ?></span></a>
  10. </li>
  11.  
  12. <?php $last_level = 0; $is_visible = false; $show_full_tree = $widget->getOption('show_full_tree'); ?>
  13.  
  14. <?php foreach($cats as $id=>$item){?>
  15.  
  16. <?php
  17. $item_count = $model->filterCategory($ctype_name, $item, true)->getContentItemsCount($ctype_name);
  18. $model->resetFilters();
  19. ?>
  20. <?php
  21. $is_active = (!empty($active_cat['id']) && $id == $active_cat['id']);
  22. $is_visible = isset($path[$item['id']]) || isset($path[$item['parent_id']]) || $item['ns_level'] <= 1;
  23. if (!isset($item['ns_level'])) { $item['ns_level'] = 1; }
  24. $item['childs_count'] = ($item['ns_right'] - $item['ns_left']) > 1;
  25. $url = href_to($ctype_name, $item['slug']);
  26. ?>
  27.  
  28. <?php for ($i=0; $i<($last_level - $item['ns_level']); $i++) { ?>
  29. </li></ul>
  30. <?php } ?>
  31.  
  32. <?php if ($item['ns_level'] <= $last_level) { ?>
  33. </li>
  34. <?php } ?>
  35.  
  36. <?php
  37. $css_classes = array();
  38. if ($is_active) { $css_classes[] = 'active'; }
  39. if ($item['childs_count']) { $css_classes[] = 'folder'; }
  40. if (!$is_visible && !$show_full_tree) { $css_classes[] = 'folder_hidden'; }
  41. ?>
  42.  
  43. <li <?php if ($css_classes) { ?>class="<?php echo implode(' ', $css_classes); ?>"<?php } ?>>
  44.  
  45. <a class="item" href="<?php echo $url; ?>">
  46. <?php html($item['title']); ?>
  47. <span class="item_count"><?php echo $item_count; ?></span>
  48. </a>
  49.  
  50. <?php if ($item['childs_count']) { ?><ul><?php } ?>
  51.  
  52. <?php $last_level = $item['ns_level']; ?>
  53.  
  54. <?php } ?>
  55.  
  56. <?php for ($i=0; $i<$last_level; $i++) { ?>
  57. </li></ul>
  58. <?php } ?>
  59.  
  60. </div>
#8 19 декабря 2017 в 15:31

Что-то не так

Capitan
Да, выводит, но считает неправильно
#9 19 декабря 2017 в 15:49

И замените на это:
Спойлер
Код PHP:
<a href="<?php $cat_count = cmsCore::getModel('content')->join('con_articles_cats', 'ac', 'i.category_id = ac.id')->filterEqual('category_id', $c['id'])->filterOr('ac.parent_id = i.category_id')->getCount('con_articles', 'id'); echo href_to($base_url. (($dataset && $is_ds_view && !$is_ds_hide)? '-'.$dataset: ''), $c['slug']); ?>"><?php echo $c['title'].' ('.$cat_count.')'; ?></a>

Ris
я так понимаю этот код заточен под статьи, и будет правильно считать только в "статьях". Как сделать автоматом под любой тип контента
#10 19 декабря 2017 в 19:16


я так понимаю этот код заточен под статьи, и будет правильно считать только в "статьях". Как сделать автоматом под любой тип контента

@Vildan
Я же Вам написал код выше, для виджета категории контента
#11 19 декабря 2017 в 21:51

Как сделать автоматом под любой тип контента

@Vildan
Как-то так:
  1. <a href="<?php $cat_count = cmsCore::getModel('content')->join('con_'.$ctype['name'].'_cats', 'ac', 'i.category_id = ac.id')->filterEqual('category_id', $c['id'])->filterOr('ac.parent_id = i.category_id')->getCount('con_'.$ctype['name'].'', 'id'); echo href_to($base_url . (($dataset && $is_ds_view && !$is_ds_hide) ? '-'.$dataset : ''), $c['slug']); ?>"><?php echo $c['title'].' ('.$cat_count.')'; ?></a>
#12 20 декабря 2017 в 13:59
pixellife, Ris, Благодарю! И для виджетов, и для типов контента работает! dance

Все, можно закрывать тему)
#13 8 января 2018 в 16:30
Ris, А как можно вывести количество фотографий из поля "Набор изображений" поверх основного поля "Изображение"?
#14 8 января 2018 в 18:11

А как можно вывести количество фотографий из поля "Набор изображений" поверх основного поля "Изображение"?

Capitan
Пример для табличного вывода объявлений:
В файле \templates\default\content\default_list_table.tpl.php после
  1. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  2. <?php if (!empty($item['photo'])){ ?>
  3. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  4. <?php unset($item['photo']); ?>
  5. <?php } ?>
  6. </a>
Вставляем что-то типа
  1. <?php if (isset($item['photos'])){ ?>
  2. <div class="photos_count"><?php echo substr_count($item['photos'], 'small');?></div>
  3. <?php } ?>
Потом в стилях можно украсить эту цифру и двигать куда надо. Например так:
  1. .photos_count {
  2. font-size: 20px;
  3. font-weight: bold;
  4. text-align: center;
  5. margin-top: -25px;
  6. margin-left: 20px;
  7. background-color: #fff;
  8. opacity: 0.5;
  9. }
Результат:
#15 8 января 2018 в 19:36
Ris, К сожалению моя таблица отличается и не содержит четкого определения поля рhoto
И как итог предложеный вариант отображается в каждой ячейке, да и к томуже почему-то колво фотос умножается на 2 :)

Вот мой пример тела таблицы

  1.  
  2. <tbody>
  3. <?php foreach($items as $item){ ?>
  4. <?php $item['ctype'] = $ctype; ?>
  5. <tr <?php if (!empty($item['is_vip'])){ ?> class="is_vip"<?php } ?>>
  6. <?php if (!empty($item['rating_widget'])){ ?>
  7. <td class="rating">
  8. <?php echo $item['rating_widget']; ?>
  9. </td>
  10. <?php } ?>
  11. <td class="">
  12. <?php echo $item['id']; ?>
  13. </td>
  14. <?php if (!empty($ctype['is_favorites'])){ ?>
  15. <td class="td_fav">
  16. <?php echo $item['favorite_widget']; ?>
  17. </td>
  18. <?php } ?>
  19.  
  20. <?php foreach($fields as $field){ ?>
  21. <?php if (!isset($item[$field['name']]) || (!$item[$field['name']] && $item[$field['name']] !== '0')) {
  22. echo '<td>&nbsp;</td>'; continue;
  23. } ?>
  24. <td class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  25. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  26.  
  27. <?php if ($item['parent_id']){ ?>
  28. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php echo htmlspecialchars($item['parent_title']); ?></a>
  29. &rarr;
  30. <?php } ?>
  31. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php echo htmlspecialchars($item[$field['name']]); ?></a>
  32.  
  33. <?php } else { ?>
  34. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  35. <?php } ?>
  36. </td>
  37. <?php } ?>
  38. </tr>
  39. <?php } ?>
  40. </tbody>
  41.  

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