Счетчик контента в категориях

InstantCMS 2.X
#1 12 декабря 2020 в 01:07
Есть ли универсальное решение для создания счетчика контента?
Люди любят цифры. Почему бы в названии категории не добавить кол-во записей в этой категории.
Может есть универсальное решение?
Когда-то было под ну очень раннюю двойку.
#2 12 декабря 2020 в 09:45

Может есть универсальное решение?

Capitan
Универсального решения не знаю, но можно сделать как то так (Наверно можно laugh)
В templates\modern\controllers\content\category_view.tpl.php после строки 102
  1. <?php foreach($subcats as $c){ ?>
вставить вот это
  1. <?php $c_count = cmsCore::getModel('content')->filterEqual('is_deleted', null)->filterEqual('is_approved', '1')->filterEqual('is_private', '0')->filterEqual('is_pub', '1')->filterEqual('category_id', $c['id'])->getCount('con_'.$ctype['name'].'');?>
Ну и показать цифры
  1. <?php echo $c_count; ?>
Если написал глупость, знающие поправьте…
#3 9 июля 2022 в 10:26

Может есть универсальное решение?

Capitan
Универсального решения не знаю, но можно сделать как то так (Наверно можно laugh)
В templates\modern\controllers\content\category_view.tpl.php после строки 102
  1. <?php foreach($subcats as $c){ ?>
вставить вот это
  1. <?php $c_count = cmsCore::getModel('content')->filterEqual('is_deleted', null)->filterEqual('is_approved', '1')->filterEqual('is_private', '0')->filterEqual('is_pub', '1')->filterEqual('category_id', $c['id'])->getCount('con_'.$ctype['name'].'');?>
Ну и показать цифры
  1. <?php echo $c_count; ?>
Если написал глупость, знающие поправьте...
Tolya

все работает, но только при одном условии, что у вас нет подкатегорий. Может кто подскажет, как считать общее кол-во вместе с подкатегориями?

#4 9 июля 2022 в 10:28

все работает

kalikimaka

использовали код из темы?)

Следующая тема будет «Инстант тормозит!!! ААААА!!! Плохая цмс»
#5 9 июля 2022 в 11:02

использовали код из темы?)

Zau4man

другого нет, к сожалению некоторые элементарные вещи отсутствуют в цмс, иногда вызывает недоумение, мелочевкой никто заниматься не хочет, в числе и вы, какое решение? Никакого

пс: с чего бы ему тормозить, если этот эти рубрики загружаются на первой странице категрий и больше негде(в моем случае), вместо ерничества лучше отвечать по теме, а не кто что сделал не так

#6 9 июля 2022 в 12:21

с чего бы ему тормозить

kalikimaka

Данный пример плохой, потому что внутри цикла создается объект модели и выполняется запрос. Например если у вас 40 категории, создается 40 объектов модели и запрос к БД. В какой то момент ваш сайт начнет тормозить.

По поводу счётчика: Надо реализовать с помощью хука и с соединением join. Я как то пытался, но чуть мозг не сломал, потому что слишком много связок у записи с таблицами. Для своего компонента Вопросы реализовал, так как там одна таблица _cats, а у типов контента есть еще _cats_bind

Думаю с этой задачей справиться кто то с ником Fuze или Loadырь 😉

#7 9 июля 2022 в 12:35

некоторые элементарные вещи отсутствуют в цмс

kalikimaka

они не элементарные. Есть права доступа к записям. Для вас может быть 4 записи в категории, а админ увидит все 15, в том числе не опубликованные.

Нет универсального количества записей. Только с какими-то допущениями. И такого решения не может быть «в коробке».

Себе для магазина делал подсчет по крон demo2.bergorod.ru/shop
Считаются только опубликованные товары. Считаются раз в сутки. Чаще магазину и не надо.

#8 9 июля 2022 в 12:41

Себе для магазина делал подсчет по крон demo2.bergorod.ru/shop

Zau4man

А что за шаблон? такой разве есть в дополнениях?

#9 9 июля 2022 в 12:50

 Capitan,

Делался под заказ. В дополнениях нет
#10 9 июля 2022 в 14:21

с чего бы ему тормозить

kalikimaka

Данный пример плохой, потому что внутри цикла создается объект модели и выполняется запрос. Например если у вас 40 категории, создается 40 объектов модели и запрос к БД. В какой то момент ваш сайт начнет тормозить.

По поводу счётчика: Надо реализовать с помощью хука и с соединением join. Я как то пытался, но чуть мозг не сломал, потому что слишком много связок у записи с таблицами. Для своего компонента Вопросы реализовал, так как там одна таблица _cats, а у типов контента есть еще _cats_bind

Думаю с этой задачей справиться кто то с ником Fuze или Loadырь 😉

My-InstantCMS.Ru

у вас в Магазине есть виджет Рубрикатор, там считает кол-во записей, каким образом реализовано? И еще есть виджет Рубрикатор, там так же считает 

...ИзображениеИзображение
#11 9 июля 2022 в 15:41

 kalikimaka, там так же внутри цикла выполняется запрос, но объект модели не создается каждый раз, всё ровно считаю это неправильное решение

#12 9 июля 2022 в 20:34

всё ровно считаю это неправильное решение

My-InstantCMS.Ru

Решение было сделано на коленке за 5 минут. Для иллюстрации метода добычи количества материалов в категориях.

Скорее всего, можно сделать хук content_before_category в котором сформировать переменную в массиве $category, в которую поместить массив с количеством контента в каждой категории.

#13 10 июля 2022 в 11:07

некоторые элементарные вещи отсутствуют в цмс

kalikimaka

они не элементарные. Есть права доступа к записям. Для вас может быть 4 записи в категории, а админ увидит все 15, в том числе не опубликованные.

Нет универсального количества записей. Только с какими-то допущениями. И такого решения не может быть «в коробке».

Себе для магазина делал подсчет по крон demo2.bergorod.ru/shop
Считаются только опубликованные товары. Считаются раз в сутки. Чаще магазину и не надо.

Zau4man

я так думаю, точная цифра не актуальна:) а актуально, то чтобы именно считались все записи в категориях и подкатегориях, а не только в основных категориях. И да, по крону вполне достаточно, раз в сутки.

#14 15 июля 2022 в 20:32

Ради спортивного интереса поставил галочку у одного типа контента

Изображение

Результат получился вполне жизнеспособный prefitchi.ru/hotels. Считает с учетом подкатегорий, но только публичные записи (те, которые гости могут посмотреть). При 1.1К категорий и 173К записей запрос отработал всего за 0,8 секунды, и это без кэшей, хранилища в БД и т.п. и с виджетом карты с объектами из данного типа контента.

Изображение

Изображение

А сколько бы заняла загрузка количества в цикле для каждой категории, мне даже не хочется узнавать.

#15 15 июля 2022 в 21:18

А сколько бы заняла загрузка количества в цикле для каждой категории, мне даже не хочется узнавать.

Loadырь

Может поле в базе сделать «content_quantity» ?

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