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

#31 10 января 2018 в 16:46

Компонент и 2 хука.

Zau4man
Уже ближе к теме, но достаточно одного хука. Подсказываю: есть же таблица cms_con_чего-то-там_cats_binds. В её сторону надо копать.
#32 10 января 2018 в 20:34

но достаточно одного хука

Loadырь
Компонент не нужен, но хуков 3 (add, edit, delete).
Кто еще какую загадку загадает?
#33 14 января 2018 в 23:55
Проблема с подсчетом кол-ва фото так и не решилась. Проблема вот тут kupianapa.ru/
Кол-во маленьких фото умножает на два. Причем системы нет😊Т.к некоторые нормально считает а некоторые умножает, а следовательно решение через поделить на два тут не подходит.
#34 15 января 2018 в 06:30

Проблема с подсчетом кол-ва фото так и не решилась. Проблема вот тут kupianapa.ru/
Кол-во маленьких фото умножает на два. Причем системы нет Т.к некоторые нормально считает а некоторые умножает, а следовательно решение через поделить на два тут не подходит.

Capitan
скинь в лс то как сейчас считает фотки
#35 15 января 2018 в 11:48

скинь в лс то как сейчас считает фотки

ideasdigger
Оно там тупо считает количество слов small
  1. echo substr_count($item['photos'], 'small');
Что у Capitan творится в поле photos, он упорно не рассказывает.
#36 15 января 2018 в 11:57

Оно там тупо считает количество слов small

Ris
а зачем считать слова small? там же в виде yaml массива а small это пресет картинки
  1. count(cmsModel::yamlToArray($item['photos']))
#37 15 января 2018 в 12:18

а зачем считать слова small?

ideasdigger
Один презет смолл — одна картинка. У меня это работает.
#38 15 января 2018 в 14:44

Что у Capitan творится в поле photos, он упорно не рассказывает.

Ris
Так а что то там может твориться? Поле как поле.
Вот весь дефаул лист
  1. <?php
  2. if( $ctype['options']['list_show_filter'] ) {
  3. $this->renderAsset('ui/filter-panel', array(
  4. 'css_prefix' => $ctype['name'],
  5. 'page_url' => $page_url,
  6. 'fields' => $fields,
  7. 'props_fields' => $props_fields,
  8. 'props' => $props,
  9. 'filters' => $filters,
  10. 'ext_hidden_params' => $ext_hidden_params,
  11. 'is_expanded' => $ctype['options']['list_expand_filter']
  12. ));
  13. }
  14. ?>
  15.  
  16. <?php if ($items){ ?>
  17.  
  18. <div class="content_list featured <?php echo $ctype['name']; ?>_list">
  19.  
  20. <?php foreach($items as $item){ ?>
  21.  
  22. <?php $stop = 0; ?>
  23.  
  24. <div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
  25.  
  26. <?php if (!empty($item['fields']['photo'])){ ?>
  27. <div class="photo">
  28. <?php if (!empty($item['is_private_item'])) { ?>
  29. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  30. <?php } else { ?>
  31. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  32. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  33. </a>
  34. <?php } ?>
  35. <?php unset($item['fields']['photo']); ?>
  36.  
  37.  
  38. </div>
  39. <?php } ?>
  40.  
  41. <?php if (isset($item['photos'])){ ?>
  42. <div class="photos_count" title="<?php echo LANG_ALL_PHOTOS; ?>">
  43.  
  44.  
  45.  
  46. <?php echo substr_count($item['photos'], 'small');?>
  47. </div>
  48. <?php } ?>
  49.  
  50.  
  51. <div class="fields">
  52.  
  53. <?php foreach($item['fields'] as $field){ ?>
  54.  
  55. <?php if ($stop === 2) { break; } ?>
  56.  
  57. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  58.  
  59. <?php if ($field['label_pos'] != 'none'){ ?>
  60. <div class="title_<?php echo $field['label_pos']; ?>">
  61. <?php echo $field['title'] . ($field['label_pos']=='left' ? ': ' : ''); ?>
  62. </div>
  63. <?php } ?>
  64.  
  65. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  66. <h2 class="value">
  67. <?php if (!empty($this->menus['list_actions_menu'])){ ?>
  68. <div class="list_actions_menu controller_actions_menu dropdown_menu">
  69. <input tabindex="-1" type="checkbox" id="menu_label_<?php echo $item['id']; ?>">
  70. <label for="menu_label_<?php echo $item['id']; ?>" class="group_menu_title"></label>
  71. <ul class="list_actions menu">
  72. <?php foreach($this->menus['list_actions_menu'] as $menu){ ?>
  73. <li>
  74. <a class="<?php echo isset($menu['options']['class']) ? $menu['options']['class'] : ''; ?>" href="<?php echo string_replace_keys_values($menu['url'], $item); ?>" title="<?php html($menu['title']); ?>">
  75. <?php echo $menu['title']; ?>
  76. </a>
  77. </li>
  78. <?php } ?>
  79. </ul>
  80. </div>
  81. <?php } ?>
  82. <?php if ($item['parent_id']){ ?>
  83. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  84. &rarr;
  85. <?php } ?>
  86.  
  87. <?php if (!empty($item['is_private_item'])) { $stop++; ?>
  88. <?php html($item[$field['name']]); ?> <span class="is_private" title="<?php html($item['private_item_hint']); ?>"></span>
  89. <?php } else { ?>
  90. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php html($item[$field['name']]); ?></a>
  91. <?php if ($item['is_private']) { ?>
  92. <span class="is_private" title="<?php echo LANG_PRIVACY_HINT; ?>"></span>
  93. <?php } ?>
  94. <?php } ?>
  95. </h2>
  96. <?php } else { ?>
  97. <div class="value">
  98. <?php if (!empty($item['is_private_item'])) { ?>
  99. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  100. <?php } else { ?>
  101. <?php echo $field['html']; ?>
  102. <?php } ?>
  103. </div>
  104. <?php } ?>
  105.  
  106. </div>
  107.  
  108. <?php } ?>
  109.  
  110. </div>
  111.  
  112. <?php if ($ctype['is_tags'] && !empty($ctype['options']['is_tags_in_list']) && $item['tags']){ ?>
  113. <div class="tags_bar">
  114. <?php echo html_tags_bar($item['tags']); ?>
  115. </div>
  116. <?php } ?>
  117.  
  118. <?php
  119. $show_bar = !empty($item['rating_widget']) ||
  120. $fields['date_pub']['is_in_list'] ||
  121. $fields['user']['is_in_list'] ||
  122. !empty($ctype['options']['hits_on']) ||
  123. ($ctype['is_comments'] && $item['is_comments_on']) ||
  124. !$item['is_pub'] ||
  125. !$item['is_approved'];
  126. ?>
  127.  
  128. <?php if($show_bar){ ?>
  129. <div class="info_bar">
  130. <?php if (!empty($item['rating_widget'])){ ?>
  131. <div class="bar_item bi_rating">
  132. <?php echo $item['rating_widget']; ?>
#39 15 января 2018 в 15:45
Capitan,
Я имел в виду поле photos в таблице cms_con_ваштипконтента
Например вот поле photos из таблицы cms_con_board
---

original: u1/004/11ee105b.jpg
big: u1/004/4bda72dd.jpg
normal: u1/004/d5ee5098.jpg
small: u1/004/08e78cd6.jpg
micro: u1/004/7d68bada.jpg

original: u1/004/b996b3f8.jpg
big: u1/004/1b6fe453.jpg
normal: u1/004/9c09db8a.jpg
small: u1/004/64a79d25.jpg
micro: u1/004/82c0e4f6.jpg

original: u1/004/bb7b8fda.jpg
big: u1/004/82645d44.jpg
normal: u1/004/af2a1ec7.jpg
small: u1/004/f9c36ec4.jpg
micro: u1/004/9e67cb10.jpg
То есть три картинки — три пресета small.
Попробуйте, как советует ideasdigger, вместо echo substr_count($item['photos'], 'small') написать count(cmsModel::yamlToArray($item['photos']))
#40 16 января 2018 в 01:14
Ris, Да, спасибо проблема решилась заменой
substr_count($item['photos'], 'small')
на
count(cmsModel::yamlToArray($item['photos']))
Теперь отображает правильное кол-во Дополнительных фото. smoke
#41 16 января 2018 в 20:32
Добрый день. У меня похожий вопрос.
Подскажите пожалуйста как в отдельном блоке (это важно), вывести количество записей определенного типа.?
Заранее спасибо
#42 27 февраля 2018 в 17:38


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

@Vildan
Как-то так:

Ris

Почему то не считает если находишься в корневой категории, перехожу во внутрь и там уже считает.
Прикрепленный файл
20180227172237_ph5uk.png 15 Кб
#43 7 июня 2018 в 16:32
Добрый день!
Стала проблема с выводом количества записей в виджете на главную страницу(блок должен показывать число вакансий), внутри Работы у меня находятся Вакансии, удается получить количество записей вРаботе, а из подкатегории — Вакансии — не могу
Сейчас вот так

  1.  
  2. <?php
  3. $model = new cmsModel();
  4. $vakans = $model->getCount('con_board');
  5. var_dump($vakans);
  6.  
  7. ?>
  8.  
Здесь я получается посчитал все, нормально, по всей таблице, а нужно из таблицы cms_con_board выбрать в столбце category_id и посчитать, только из 9 категории
#44 7 июня 2018 в 19:28
  1. $vakans = $model->filterEqual('category_id', 9)->getCount('con_board');
#45 4 февраля 2019 в 22:40

Как-то так:

  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>

Ris

Подскажите как подобное вывести в виджете?

Аналогично в прописал в виджете так
  1. $cat_widget_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');
Но выводе всё по нулям
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.