Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Вложенный запрос к БД при помощи TS (http://forum.typo3.ru/showthread.php?t=10349)

AlexMr 16.10.2012 17:08

Вложенный запрос к БД при помощи TS
 
Здравствуйте Сообщество.
Пытаюсь получить последние изменения из 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
}


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

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