![]() |
Подсчет и вывод записей в текущей категории средствами typoscript
И так начну описывать задачу.
Есть три категории новостей в этих трёх категориях есть по несколько десятков записей новостей. Вывод на странице делается базовыми средствами расширения. Вставил элемент контента "tt_news", код вывода "LATES", количество строк 3 На выводе имеем: ================== [Категория 1] [Заголовок 1] [короткое описание 1] ----------------------- [Категория 2] [Заголовок 2] [короткое описание 2] ----------------------- [Категория 3] [Заголовок 3] [короткое описание 3] ================== Все записи >>> Каждая из этих категорий имеет разносное количество записей. Нужно возле каждой категории вывести количество присоединенных к ней записей, а именно вот здесь... plugin.tt_news.categoryTitles_stdWrap.wrap = | [Количество записей] Для начало записал TS во так: displayLatest { categoryTitles_stdWrap { append = CONTENT append { stdWrap.numRows { table = tt_news [таблица с записами] select.pidInList = 1 [место где есть записи] } } } category_stdWrap.wrap = | } На выводе имеем: ----------------------- [Категория 3] [Количество записей] [Заголовок 3] [короткое описание 3] ================== Все записи >>> Все кажется хорошо, но возле каждой категории одинаковое количество записей подсчитанных и выведенных из [место где есть записи]. В то время как к каждой категории привязано резное количество записей. Стал вопрос, как вывести количество записей привязных к текущей категории выведенных в списке последних записей? К примеру вот так: ================== [Категория 1] [Количество записей 10] [Заголовок 1] [короткое описание 1] ----------------------- [Категория 2] [Количество записей 45] [Заголовок 2] [короткое описание 2] ----------------------- [Категория 3] [Количество записей 5] [Заголовок 3] [короткое описание 3] ================== Все записи [Количество записей 60] >>> Понимаю, что нужно воспользоваться свойством "andWhere" или "where", но как не знаю? Есть у кого либо какие то идеи? |
..., и так стало понятно, что вариантов пока нет! Может кто направит в нужное русло?
|
А описанный в TSRef select для CONTENT не подойдет разве? В нем как раз есть и where и andwhere.
|
Да, я знаю об этих свойствах, но не могу построить подходящую конструкцию (запрос) и не знаю как их можно использовать в моем случае?
|
Логично делать запрос к таблице новостей с условиями типа категория = 1 и новость не удалена и не спрятана:
Что-то типа Код:
SELECT * |
Не выходит что-то у меня. Может давайте сложим в месте эту конструкцию?
К примеру: ========= 10 = CONTENT 10 { table = tt_news # таблица с записями новостей select { selectFields = ??? # здесь не ясно что... возможно выделить столбец "category" join = ??? # с этим я не знаю что делать where = tt_news.deleted = 0 AND tt_news.hidden = 0 # учитывать все записи у кого 0 (то есть видна и не удалена), а если 1 и другое, то не учитывать. andWhere { dataWrap = tt_news.category = {field:uid} # текущая категория ...??? } } } |
Насколько я понимаю для подсчета нужно использовать count(*). Т.е. сгруппировать по полю category и потом посчитать по нему же. Как-то так.
|
Отлично..., теперь у нас есть во это:
10 = CONTENT 10 { table = tt_news # таблица с записями новостей select { pidInList = 1 # место где содержатся записи selectFields = count(*) # выделить все записи в таблице "tt_news" where = tt_news.deleted = 0 AND tt_news.hidden = 0 # учитывать все записи у кого 0 (то есть видна и не удалена), а если 1 и другое, то не учитывать. andWhere { dataWrap = tt_news.category = {field:uid} # текущая категория ...??? } groupBy = tt_news.category # группировать по категории ...правильно ли? } } Первое, нужно же определить текущую категорию и наверное составить условия ..., если совпадаю текущая категория с выделенной (найденной) в таблицей, то посчитать и показать возле текущей категории..., правильно ли я мыслю? |
Мне так кажется что не нужно каждый раз указывать полное имя таблица.поле, т.е. получается что-то типа:
Код:
10 = CONTENT |
Нет, мы не там копаем.
Я обследовал таблицу "tt_new" и заметил, что поле "category" не содержит "uid" категории, выходит, что мы не можем таким образом отфильтровать записи определенной категории и вывести их количество. Это означает, что нам надо взяться за таблицу "tt_news_cat" |
Часовой пояс GMT +4, время: 13:52. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot