Вход

Просмотр полной версии : Вложенный запрос к БД при помощи TS


AlexMr
16.10.2012, 17:08
Здравствуйте Сообщество.
Пытаюсь получить последние изменения из tt_content с указанием автора. Написал следующий код:

temp.lib.content = CONTENT
temp.lib.content {
table = tt_content
select {
pidInList = 50
orderBy = tstamp
max = 5
recursive = 99
}

renderObj = COA
renderObj{
10 = LOAD_REGISTER
10{
inhalt_title.cObject = TEXT
inhalt_title.cObject.field = header

inhalt_pid.cObject = TEXT
inhalt_pid.cObject.field = pid

inhalt_date.cObject = TEXT
inhalt_date.cObject{
field = tstamp
strftime = %d.%m.%Y
}
inhalt_body.cObject = TEXT
inhalt_body.cObject.field = bodytext
inhalt_body.cObject.crop = 250|...|1

inhalt_userid.cObject = TEXT
inhalt_userid.cObject.field = cruser_id
}
20 = TEXT
20{
value(
<div class="inhalt" style="border: 1px solid #000000;">
<h1><a href="index.php?id={register:inhalt_pid}">{register:inhalt_title}</a></h1>
<span>{register:inhalt_date}</span>
<div class="inhalt_body">{register:inhalt_body}</div>
<div class="autor">{register:inhalt_userid}</div>
</div>
)
insertData = 1
}
######
30 = CONTENT
30 {
table = be_users
source.field = uid
select.where {
cObject = TEXT
cObject.value = {register:inhalt_userid}
cObject.insertData = 1
}
renderObj = COA
renderObj{
10 = TEXT
10.field = username
}
}
######
}}
Всё работает кроме получения "настоящего" имени пользователя
Может кто-нибудь решал подобные задачи.
Заранее спасибо за ответы.

Ивано
16.10.2012, 22:00
Предложил бы использовать PHP-код и вызывать его через USER_INT или PHP_SCRIPT...

Так гораздо проще будет...:)

AlexMr
17.10.2012, 14:25
Так и работает :)
Просто периодически API меняется и надо вносить изменения в скрипт
Если использовать 'чистый' TS, то таких проблем можно будет меньше

Ивано
17.10.2012, 22:21
А если без API...
Просто mysql_query ("SELECT JOIN ...), mysql_num_rows, mysql_fetch_array()?
Или все настолько серьезно?:)

Лично, как по мне, так мною выбрана typo3 4.7.0 (здесь есть все, что нужно и API и TS и FLUID) - и с нее больше прыгать ни вниз не вверх не собираюсь - т.е. не вижу в этом вообще особой надобности и смысла. Из расширений использую только самый минимум. Единственное что в ней не очень удобно - так это инсталятор расширений - прежний мне нравился больше.

Если конечно что-то в новых версия будет очень удобным и полезным - тогда да... А так нет. Многие, как видно пользуются более старыми версиями...

dmartynenko
18.10.2012, 12:04
Если вы серьезно намерены использовать TYPO3, то полезно заглядывать в TSRef.

Там в частности написано что:

CONTENT.table
TableName /stdWrap
The table, the content should come from.
In standard configuration this will be "tt_content".
Note: Allowed tables are "pages" or tables prefixed with one of these: "pages_", "tt_", "tx_", "ttx_", "fe_", "user_" or "static_".


Если кратко - CONTENT не работает с be_* таблицами.

Попробуйте RECORDS, там про такое ограничение ничего не написано.

AlexMr
18.10.2012, 13:21
Вы абсолютно правы. Прошляпил:confused:
Попробовал такой код:
30 = RECORDS
30 {
table = be_users
source = 29
conf.be_users = TEXT
conf.be_users.field = username
dontCheckPid = 1
}
но что-то тоже не работает

"@Ивано: по поводу собственного кода - я думаю, что TS все-же будет оптимальней работать. Не зря же Вы используете "самый минимум расширений" :)

dmartynenko
18.10.2012, 13:26
Значит и RECORDS c таблицами be_* не работает.
Остается свой PHP код. Но не обязательно делать целый плагин USER_INT. можно обойтись userFunc

AlexMr
18.10.2012, 14:09
TS я только осваиваю.
Честно говоря, думал что такие вещи как запрос к БД должны решаться на основе правил самой CMS, т.е. силами TS.
Но если нет, то нет...
Будем писать функцию :D

dmartynenko
18.10.2012, 14:21
Запросы и решаются силами TS, но только туда куда положено (по мнению TYPO3)

Dmitry Dulepov
09.11.2012, 19:58
Например:

inhalt_userid.cObject = RECORDS
inhalt_userid.cObject {
source.dataWrap = be_users_{field:cruser_id}
conf.be_users = TEXT
conf.be_users.field = username
conf.be_users.htmlSpecialChars = 1
}

Андрей Аксенов
10.11.2012, 10:20
Можно при помощи готовых расширений:
http://www.typo3-tesseract.com/ru/uchebniki/znakomstvo/

AlexMr
23.11.2012, 14:07
"@Dmitry: попробовал Ваш код, но он, к сожалению, тоже не сработал

"@Андрей: спасибо за подсказку. На первый взгляд производит хорошее впечатление. Не знаю, правда, есть ли смысл использовать его в этом случае, но в любом случае попробую.