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

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 3282
Capitan:
И как итог предложеный вариант отображается в каждой ячейке
Ну поэкспериментируйте с расположением новой строки. Главное, чтобы оно было внутри цикла foreach($items as $item){
Capitan:
да и к томуже почему-то колво фотос умножается на 2
Вот это вот substr_count($item['photos'], 'small') просто считает количество слов small в поле photos.
Я понятия не имею, что там за стиль вывода списка у Вас, посмотрите, что в поле photos.
В крайнем случае поделите количество на два. smile
Код PHP:
  1. echo substr_count($item['photos'], 'small')/2;
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1115
Не знаю как но получилось
после
Код PHP:
  1. <td class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
вставил ваш код и + отсебятину :)
Код PHP:
  1.  
  2. <?php if ($field['name'] == 'photo' && $ctype['options']['item_on']){ ?>
  3. <div>
  4. <?php if (isset($item['photos'])){ ?>
  5. <div class="photos_count">
  6. <?php echo substr_count($item['photos'], 'small');?>
  7. </div>
  8. <?php } ?>
  9. <?php } else { ?>
  10. <?php }?>
  11. </div>
  12.  
Но с подсчетом не очень понятно, в некоторых записях правильно считает, в некоторых показывает в два раза больше!
Редактировалось: 2 раз (Последний: 8 января 2018 в 21:40)
Форум электронной торговли
Реклама
cms
Посетитель
small user social cms
Сообщений: 82
Товарищи, я понимаю что о многом прошу) можете еще кое-что подсказать, в общем изначально как подсказал выше Ris все работает хорошо.

Теперь задача немного усложнилась.)) в этой http://instantcms.ru/forum/thread28818-1.html#279681 теме мне подсказали как вывести подкатегории

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

И как видно на фото, получилось что подкатегории не считает, а главные категории выдает по нулям. А как сделать чтоб в главных общая сумма всех вложенных записей, а в подкатегориях количество записей именно этой подкатегории
На данный момент код вот такой в category_view.tpl.php
Код PHP:
  1. <?php if ($subcats && $ctype['is_cats'] && !empty($ctype['options']['is_show_cats'])){ ?>
  2. <div class="gui-panel content_categories<?php if (count($subcats)>8){ ?> categories_small<?php } ?>">
  3. <ul class="<?php echo $ctype['name'];?>_icon">
  4. <?php foreach($subcats as $c){ ?>
  5.  
  6. <?php
  7. $is_ds_view = empty($current_dataset['cats_view']) || in_array($c['id'], $current_dataset['cats_view']);
  8. $is_ds_hide = !empty($current_dataset['cats_hide']) && in_array($c['id'], $current_dataset['cats_hide']);
  9. ?>
  10.  
  11. <li class="<?php echo str_replace('/', '-', $c['slug']);?>">
  12. <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>
  13. <?php $subcats2 = cmsCore::getModel('content')->getSubCategories($ctype['name'], $c['id']); ?>
  14. <?php if($subcats2) { ?>
  15. <ul>
  16. <?php foreach ($subcats2 as $c2) { ?>
  17. <li class="<?php echo str_replace('/', '-', $c2['slug']);?>">
  18. <a href="<?php echo href_to($base_url . ''.$dataset, $c2['slug']); ?>"><?php echo $c2['title']; ?></a>
  19. </li>
  20. <?php } ?>
  21. </ul>
  22. <?php } ?>
  23. </li>
  24. <?php } ?>
  25. </ul>
  26. </div>
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 3282
Dan:
И как видно на фото, получилось что подкатегории не считает, а главные категории выдает по нулям. А как сделать чтоб в главных общая сумма всех вложенных записей, а в подкатегориях количество записей именно этой подкатегории
Попробуйте считать контент в категориях таким образом:
Код PHP:
  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. ->getContentItemsCount($ctype['name']);
Редактировалось: 1 раз (Последний: 10 января 2018 в 09:27)
Посетитель
small user social cms
Сообщений: 82
Все. Ris, еще раз спасибо. Кое-что пришлось подправить. Я доволен как слон. hoho Вот что получилось.
Код PHP:
  1.  
  2. <div class="gui-panel content_categories<?php if (count($subcats)>8){ ?> categories_small<?php } ?>">
  3. <ul class="<?php echo $ctype['name'];?>_icon">
  4. <?php foreach($subcats as $c){ ?>
  5.  
  6. <?php
  7. $is_ds_view = empty($current_dataset['cats_view']) || in_array($c['id'], $current_dataset['cats_view']);
  8. $is_ds_hide = !empty($current_dataset['cats_hide']) && in_array($c['id'], $current_dataset['cats_hide']);
  9. ?>
  10.  
  11. <li class="<?php echo str_replace('/', '-', $c['slug']);?>">
  12. <a href="<?php $cat_count = cmsCore::getModel('content')
  13. ->joinLeft('con_'.$ctype['name'].'_cats', 'ac', 'i.category_id = ac.id')->filterGt('ac.ns_left', $c['ns_left']-1)->filterLt('ac.ns_right', $c['ns_right']+1)
  14. ->getContentItemsCount($ctype['name']); echo href_to($base_url . (($dataset && $is_ds_view && !$is_ds_hide) ? '-'.$dataset : ''), $c['slug']); ?>"><?php echo $c['title'].' ('.$cat_count.')'; ?></a>
  15. <?php $subcats2 = cmsCore::getModel('content')->getSubCategories($ctype['name'], $c['id']); ?>
  16. <?php if($subcats2) { ?>
  17. <ul>
  18. <?php foreach ($subcats2 as $c2) { ?>
  19. <li class="<?php echo str_replace('/', '-', $c2['slug']);?>">
  20.  
  21. <a href="<?php $cat_count = cmsCore::getModel('content')->join('con_'.$ctype['name'].'_cats', 'ac', 'i.category_id = ac.id')->filterEqual('category_id', $c2['id'])->filterOr('ac.parent_id = i.category_id')->getCount('con_'.$ctype['name'].'', 'id'); echo href_to($base_url . ''.$dataset, $c2['slug']); ?>"><?php echo $c2['title'].' ('.$cat_count.')'; ?></a>
  22.  
  23. </li>
  24. <?php } ?>
  25. </ul>
  26. <?php } ?>
  27. </li>
  28. <?php } ?>
  29. </ul>
  30. </div>
  31.  
Как вывести количество материала для меню \"Категории\" для InstantCMS 2?
Осталось все это дело поправить в CSS и нормально.
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3935
Dan, если не секрет, можете показать статистику этой страницы с включенной отладкой в настройках сайта?
1. Количество запросов в бд https://yadi.sk/i/kUuI3kRN3RKSNm (сами запросы не нужны, только их количество).
2. Time и Mem этой страницы https://yadi.sk/i/GlDB6SWD3RKSY7
Посетитель
small user social cms
Сообщений: 82
Loadырь:
2. Time и Mem
Time: 0.1056 s Mem: 3.5 Mb
А вот количество запросов как посмотреть я не знаю. scratch это пока темный лес для меня)
А в чем собственно дело? что-то не так сделал)))
Редактировалось: 2 раз (Последний: 10 января 2018 в 10:15)
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3935
Dan:
А вот количество запросов как посмотреть я не знаю
Нажмите на слово "Отладка", рядом с Time: 0.1056 s Mem: 3.5 Mb
Dan:
А в чем собственно дело?
Спортивный интерес. Сдаётся мне, что количество запросов у вас прямопропорционально количеству категорий.
Посетитель
small user social cms
Сообщений: 82
Как вывести количество материала для меню \"Категории\" для InstantCMS 2?
Loadырь, ну 24. на категории 14 запросов
Каков диагноз?))) Я понимаю что типа надо делать чтоб меньше было запросов в базу, быстрее грузились страницы и т.д. Но я как то пока на юзабилити ориентируюсь, а там скил подрастет - поправлю как надо)
Редактировалось: 3 раз (Последний: 10 января 2018 в 10:34)
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3935
Dan:
Каков диагноз?)))
Сами судите, сейчас у вас 18 категорий из них 14 - подкатегории и соответственно к каждой из них по запросу в БД.
Что будет когда у вас станет 100 подкатегорий?
Посетитель
small user social cms
Сообщений: 82
Loadырь:
Что будет когда у вас станет 100 подкатегорий
п...ц будет)) я понимаю. но 100 подкатегорий точно не будет. может еще штук 5 прибавится, но основная структура уже такая.
как говорил выше я пока не знаю, как решить это, но надеюсь что потом дойдут до этого руки. Если знаете как, то отпишитесь smile я по крайней мере буду знать к кому если что обратиться
ну или напишите сюда решение zst
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
Почетный донор проектаМедаль
Сообщений: 339
а кто не даёт кэшировать?)
Решаю проблемы на ваших проектах)
Посетитель
small user social cms
Сообщений: 82
ideasdigger:
а кто не даёт кэшировать?)
что это, как это? scratch наверно это будет потом отдельной веткой , темой.
Редактировалось: 1 раз (Последний: 10 января 2018 в 15:13)
Я чайник, который учится на практике и делает это 102car.ru и вот это ufastroyki.ru
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 3282
Еще вариант - сделать в таблицах категорий колумн content_count и писать туда количество контента в категории и дочерних категориях.
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2839
Ris:
Еще вариант - сделать в таблицах категорий колумн content_count и писать туда количество контента в категории и дочерних категориях.
это, кстати. вполне рабочий вариант. Обновлять значение при редактировании категории и при добавлении материала. Если материал в черновике, то считаем его после одобрения. При удалении тоже.
Компонент и 2 хука.
Редактировалось: 1 раз (Последний: 10 января 2018 в 16:32)
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/ tm @zau4man
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.