Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   При использовании table=pages в CONTENT данные возвращаются без локализации (http://forum.typo3.ru/showthread.php?t=8708)

cyber 07.07.2010 17:33

При использовании table=pages в CONTENT данные возвращаются без локализации
 
Написал следующий скрипт для вывода списка, состоящего из краткой информации, взятой из полей 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]



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

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