Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Подсчет и вывод записей в текущей категории средствами typoscript (http://forum.typo3.ru/showthread.php?t=9461)

-=UncleByte=- 17.05.2011 23:27

Посмотрел базу, насколько понял все отношения между новостями и категориями описываются в tt_news_cat_mm - там расписано к каким категориям имеет отношение новость: если к нескольким, то там несколько записей для одной новости.

thebat 18.05.2011 00:48

Мы уже на шаг подошли ближе к решению.

Теперь нужно определить, как использовать полученную информацию?

Есть вопрос, где или в какой таблице делать выборку... tt_new или tt_news_cat_mm

Я выяснил, что связи с записями tt_news прописаны в поле uid_local таблицы tt_news_cat_mm.

tt_news_cat_mm связан сего полем uid_foreign и в поле UID в таблиці tt_news_cat.

Схематично: tt_news.uid <> uid_local.tt_news_cat_mm - tt_news_cat_mm.uid_foreign <> uid.tt_news_cat

Возможно я ошибся ..., может кто поправит если это не так.

-=UncleByte=- 18.05.2011 02:52

Наверное логично будет использовать tt_news_cat_mm потому что любая из новостей может быть в нескольких категориях. То есть группируем по категории и подсчитываем количество новостей в данной категории учитывая при этом состояние новости в tt_news.

thebat 22.05.2011 18:09

Спасибо, но система отвечает, что это не так...

table = tt_news_cat_mm
Oops, an error occured!
There is no entry in the $TCA array for the table "tt_news_cat_mm". This means that the function enableFields() is called with an invalid table name as argument.
Нет $TCA масива для "tt_news_cat_mm" это значить что "tt_news_cat_mm" отбрасываем и у нас остаетсяч только ""tt_news_cat" или ""tt_news"

-=UncleByte=- 22.05.2011 18:26

Странно, ведь таблица в базе присутствует. Или у меня какой-то неправильный tt_news?

thebat 22.05.2011 18:50

Да, нет tt_news такой же и таблица "tt_news_cat_mm" присутствует, но при написании такой конструкцию typoscript

Код:

10 = CONTENT
10 {
        stdWrap.numRows {
                table = tt_news_cat_mm
        }
}

..., я получаю ошибку, описанную выше.

-=UncleByte=- 22.05.2011 19:03

Так может обойтись без numRows просто select'ом?
Т.е.
Код:

10 = CONTENT
10 {
    table = tt_news_cat_mm
    select {
        pidInList = this
        groupBy = uid_foreign
        selectFields = count(uid_foreign)
        ...
    }
}

За синтаксис mysql ручаться не буду, но принцип, думаю, отразил верно.

thebat 22.05.2011 19:26

Ничего не выходит..., без разницы, что так:

Код:

10 = CONTENT
10 {
        stdWrap.numRows {
                table = tt_news_cat_mm
                select {
                        pidInList = this
                        selectFields = count(*)
                }
        }
}

.., что так..

Код:

10 = CONTENT
10 {
        table = tt_news_cat_mm
        select {
                pidInList = this
                selectFields = count(*)
        }
}

Ошибка та же. ...???

И мне еще не понятно из чего вы взяли, что это "count(*)" подсчитывает записи в таблице? Я пробовал составленную вам конструкция и на выводе ничего не получил ..., просто пусто, даже если указать что считать, к примеру во так "count(uid)" и даже если это считать в таблице "tt_news" ....????

-=UncleByte=- 22.05.2011 19:50

Ну вообще из примеров по запросам mysql. http://www.google.ru/search?q=подсчи...+по+полю+mysql

thebat 22.05.2011 20:16

..., возможно, но вот этот простой typoscript:
Код:

20 = CONTENT
20 {
        table = tt_news
        select {
                pidInList = 1
                selectFields = count(*)
        }
        wrap = [|]
}

..., на выводе ничего не дал..., вообще ничего, а точнее [no news_id given] ...почему?


Часовой пояс GMT +4, время: 00:02.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot