PDA

Просмотр полной версии : При использовании table=pages в CONTENT данные возвращаются без локализации


cyber
07.07.2010, 17:33
Написал следующий скрипт для вывода списка, состоящего из краткой информации, взятой из полей abstract из подстраниц, также должен выводиться nav_title в качестве заголовка и ссылка на соответствующую страницу. На сайте настроены 4 языка. Все хорошо работает, за исключением того, что при выборе другого языка информация для этих полей выводится со значениями дефолтного языка (как я понял, в таблицу pages_language_overlay при этом Typo3 даже не лезет). В чем может быть проблема? Заранее благодарен.

[globalVar = TSFE:id = 98]
lib.cityInfo = COA
lib.cityInfo {
10 = TEXT
10.value = Краткая информация о городах:
10.wrap = <h3>|</h3>
20 = CONTENT
20 {
table = pages
select{
where = abstract != ""
pidInList = 98
selectFields = uid,nav_title,abstract
}
renderObj = COA
renderObj {
wrap = <div style="border:1px solid #e1e8f3; margin-top:10px; margin-bottom:10px; padding:10px;">|</div>
10 = TEXT
10 {
field = nav_title // title
typolink.parameter.field=uid
wrap = <div style="font-size:10pt; font-weight:bold;">|</div>
}
20 = TEXT
20 {
field = abstract
wrap = <div style="margin:10px;">|&nbsp;
}
30 = TEXT
30 {
wrap=|</div>
value=[подробнее]
typolink.parameter.field=uid
}
}
}
}

cherkatel
07.07.2010, 18:13
select.languageField ?

cyber
07.07.2010, 18:16
При установке этого значения в sys_language_uid все вообще напрочь пропадает. Если устанавливать его в конкретное значение, то инфа показывается только для этого языка, но в любом случае не переводится - значения остаются дефолтными (в моем случае - русскими)

cherkatel
07.07.2010, 18:52
а, ну так логично . select делает только ту выборку, что ему сказали, так что пишите хитрую выборку.

cyber
07.07.2010, 19:00
Если бы я знал, каким образом можно с помощью .select добраться до локализованных значений... Просто в таблице page локализованные значения не хранятся

void
07.07.2010, 19:45
Я когда-то такое делал, и если память мне не изменяет, мне приходилось писать отдельную конструкцию для выборки записей из pages_language_overlay.

cyber
08.07.2010, 13:24
Проблему решил. Все заработало. Пришлось запрос немного подкорректировать. Хотя есть небольшое НО: теперь для TypoLink'ов нельзя было использовать uid, так как идентификатором страницы в таблице pages_language_overlay является pid. Пришлось делать копию объекта и заменять соответствующие данные:

[globalVar = TSFE:id = 98]
lib.cityInfo = COA
lib.cityInfo {
10 = TEXT
10.value = {$cityShortInfoTitle}
10.wrap = <h3>|</h3>
20 = CONTENT
20 {
table = pages
slide = -1
select.pidInList = 98
renderObj = COA
renderObj {
wrap = <div style="border:1px solid #e1e8f3; margin-top:10px; margin-bottom:10px; padding:10px;">|</div>
10 = TEXT
10 {
field = nav_title // title
typolink.parameter.field=uid
wrap = <div style="font-size:10pt; font-weight:bold;">|</div>
}
20 = TEXT
20 {
field = abstract
wrap = <div style="margin:10px;">|&nbsp;
}
30 = TEXT
30 {
wrap=|</div>
value={$moreFieldTitle}
typolink.parameter.field=uid
}
}
}
}

[globalVar = GP:L > 2 ]

lib.cityInfo >
lib.cityInfo = COA
lib.cityInfo {
10 = TEXT
10.value = {$cityShortInfoTitle}
10.wrap = <h3>|</h3>
20 = CONTENT
20 {
table = pages
slide = -1
select{
join = pages_language_overlay ON (pages_language_overlay.pid=pages.uid)
andWhere {
data = TSFE:sys_language_uid
wrap = sys_language_uid=|
}
}
renderObj = COA
renderObj {
wrap = <div style="border:1px solid #e1e8f3; margin-top:10px; margin-bottom:10px; padding:10px;">|</div>
10 = TEXT
10 {
field = nav_title // title
typolink.parameter.field=pid
wrap = <div style="font-size:10pt; font-weight:bold;">|</div>
}
20 = TEXT
20 {
field = abstract
wrap = <div style="margin:10px;">|&nbsp;
}
30 = TEXT
30 {
wrap=|</div>
value={$moreFieldTitle}
typolink.parameter.field=pid
}
}
}
}
[global]