Вывод количества материала в категориях

#1 1 октября 2017 в 13:20
Собственно вопрос на скрине, как такое реализовать? 2ая версия системы
#3 16 февраля 2018 в 00:37

Есть компонент Рубрикатор

@Elv
Есть. И даже работает, подтверждаю.
Только вы рискуете остаться без поддержки компонентов от этого автора при обновлениях или проблемах, либо не получить того, о чём договаривались просто по его капризу. И без возврата уплаченных денег.
#5 16 февраля 2018 в 09:47


Что-то такое уже обсуждалось:
instantcms.ru/forum/thread20918-2.html#279732

Ris
Если много запросов к БД, кто может допилить рубрикатор? Желательно обновлением, так как куча правок в каждом компоненте мне не надо, тем более после обновления instantcms. Про отдельное обновление в курсе, но исправить все косяки сам не в силах.

Потом человек пишет о проблеме и его все не понимают.

Из-за этого не хочется ставить новые компоненты и обновлять cms. Не обновишь может быть плохо, обновишь может быть плохо. "Взялся" за яйца — молоко пропало. ©
#6 16 февраля 2018 в 12:02

Если много запросов к БД, кто может допилить рубрикатор ?

@Elv
А что, в рубрикаторе запросов мало? Кто-то сравнивал?
В любом случае, для каждой категории будет запрос SELECT COUNT. И уйти от этого можно только добавив колонку со счетчиком материалов в таблицу категорий.
=========================================================
Можно попробовать вот так считать материалы в категориях:
  1. $cat_count = cmsCore::getModel('content')
  2. ->joinLeft('con_articles_cats', 'ac', 'i.category_id = ac.id')->filterGtEqual('ac.ns_left', $c['ns_left'])->filterLtEqual('ac.ns_right', $c['ns_right'])
  3. ->getCount('con_'.$ctype['name'].'_cats_bind', "category_id = {$c['id']}");
Может будет побыстрее…
#7 16 февраля 2018 в 13:18
Ris спасибо за желание помочь и совет. Код вставить могу, знать бы куда, спасибо.
#8 16 февраля 2018 в 13:45

Код вставить могу, знать бы куда, спасибо .

@Elv
Вот файл \templates\default\controllers\content\category_view.tpl.php целиком:
  1. <?php
  2.  
  3. $list_header = empty($ctype['labels']['list']) ? $ctype['title'] : $ctype['labels']['list'];
  4. $page_header = isset($category['title']) ? $category['title'] : $list_header;
  5. $rss_query = isset($category['id']) ? "?category={$category['id']}" : '';
  6.  
  7. $base_url = $ctype['name'];
  8. $base_ds_url = href_to_rel($ctype['name']) . '%s' . (isset($category['slug']) ? '/'.$category['slug'] : '');
  9.  
  10. if (!$is_frontpage){
  11.  
  12. $seo_title = false;
  13. if (!empty($ctype['seo_title'])){ $seo_title = $ctype['seo_title']; }
  14. if (!empty($category['seo_title'])){ $seo_title = $category['seo_title']; }
  15. if (!$seo_title) { $seo_title = $page_header; }
  16. if (!empty($current_dataset['title'])){ $seo_title .= ' · '.$current_dataset['title']; }
  17. if (!empty($current_dataset['seo_title'])){ $seo_title = $current_dataset['seo_title']; }
  18.  
  19. $this->setPageTitle($seo_title);
  20.  
  21. if (!empty($ctype['seo_keys'])){ $this->setPageKeywords($ctype['seo_keys']); }
  22. if (!empty($ctype['seo_desc'])){ $this->setPageDescription($ctype['seo_desc']); }
  23. if (!empty($category['seo_keys'])){ $this->setPageKeywords($category['seo_keys']); }
  24. if (!empty($category['seo_desc'])){ $this->setPageDescription($category['seo_desc']); }
  25. if (!empty($current_dataset['seo_keys'])){ $this->setPageKeywords($current_dataset['seo_keys']); }
  26. if (!empty($current_dataset['seo_desc'])){ $this->setPageDescription($current_dataset['seo_desc']); }
  27.  
  28. $meta_item = !empty($category['id']) ? $category : (!empty($current_dataset['id']) ? $current_dataset : array());
  29.  
  30. $this->setPageKeywordsItem($meta_item)->setPageDescriptionItem($meta_item)->setPageTitleItem($meta_item);
  31.  
  32. }
  33.  
  34. if ($ctype['options']['list_on'] && !$request->isInternal() && !$is_frontpage){
  35. $this->addBreadcrumb($list_header, href_to($base_url));
  36. }
  37.  
  38. if (isset($category['path']) && $category['path']){
  39. foreach($category['path'] as $c){
  40. $this->addBreadcrumb($c['title'], href_to($base_url, $c['slug']));
  41. }
  42. }
  43.  
  44. if (cmsUser::isAllowed($ctype['name'], 'add')) {
  45.  
  46. if (!$category['id'] || $user->isInGroups($category['allow_add'])){
  47.  
  48. $href = href_to($ctype['name'], 'add', isset($category['path']) ? $category['id'] : '');
  49.  
  50. $this->addToolButton(array(
  51. 'class' => 'add',
  52. 'title' => sprintf(LANG_CONTENT_ADD_ITEM, $ctype['labels']['create']),
  53. 'href' => $href
  54. ));
  55.  
  56. }
  57.  
  58. }
  59.  
  60. if ($ctype['is_cats']){
  61. if (cmsUser::isAllowed($ctype['name'], 'add_cat')) {
  62. $this->addToolButton(array(
  63. 'class' => 'folder_add',
  64. 'title' => LANG_ADD_CATEGORY,
  65. 'href' => href_to($ctype['name'], 'addcat', $category['id'])
  66. ));
  67. }
  68.  
  69. if ($category['id']){
  70.  
  71. if (cmsUser::isAllowed($ctype['name'], 'edit_cat')) {
  72. $this->addToolButton(array(
  73. 'class' => 'folder_edit',
  74. 'title' => LANG_EDIT_CATEGORY,
  75. 'href' => href_to($ctype['name'], 'editcat', $category['id'])
  76. ));
  77. }
  78. if (cmsUser::isAllowed($ctype['name'], 'delete_cat')) {
  79. $this->addToolButton(array(
  80. 'class' => 'folder_delete',
  81. 'title' => LANG_DELETE_CATEGORY,
  82. 'href' => href_to($ctype['name'], 'delcat', $category['id']),
  83. 'onclick' => "if(!confirm('".LANG_DELETE_CATEGORY_CONFIRM."')){ return false; }"
  84. ));
  85. }
  86.  
  87. }
  88. }
  89.  
  90. if (cmsUser::isAdmin()){
  91. $this->addToolButton(array(
  92. 'class' => 'page_gear',
  93. 'title' => sprintf(LANG_CONTENT_TYPE_SETTINGS, mb_strtolower($ctype['title'])),
  94. 'href' => href_to('admin', 'ctypes', array('edit', $ctype['id']))
  95. ));
  96. }
  97.  
  98. ?>
  99.  
  100. <?php if ($page_header && !$request->isInternal() && !$is_frontpage){ ?>
  101. <?php if (!empty($list_styles)){ ?>
  102. <div class="content_list_styles">
  103. <?php foreach ($list_styles as $list_style) { ?>
  104. <a rel="nofollow" href="<?php echo $list_style['url']; ?>" class="style_switch <?php echo $list_style['class']; ?>">
  105. <?php echo $list_style['title']; ?>
  106. </a>
  107. <?php } ?>
  108. </div>
  109. <?php } ?>
  110. <h1>
  111. <?php echo $page_header; ?>
  112. <?php if (!empty($ctype['options']['is_rss']) && $this->controller->isControllerEnabled('rss')){ ?>
  113. <a class="inline_rss_icon" title="RSS" href="<?php echo href_to('rss', 'feed', $ctype['name']) . $rss_query; ?>"></a>
  114. <?php } ?>
  115. </h1>
  116. <?php } ?>
  117.  
  118. <?php if ($datasets && !$is_hide_items){
  119. $this->renderAsset('ui/datasets-panel', array(
  120. 'datasets' => $datasets,
  121. 'dataset_name' => $dataset,
  122. 'current_dataset' => $current_dataset,
  123. 'ds_prefix' => '-',
  124. 'base_ds_url'
#9 19 апреля 2018 в 21:53
А как выводит счетчик в категориях и подкатегориях виджета Категории?
Так же интересен вопрос вывода счетчика в рубриках ниспадающего Главного меню.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.