Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Статический контент на разных языках, на всех страницах (http://forum.typo3.ru/showthread.php?t=3422)

NiKRON 17.05.2007 21:57

Статический контент на разных языках, на всех страницах
 
У сайта в заголовке пишется какой-то текст. Нужно сделать так чтобы он отображался на всех страницах и на разных языках по разному. Но редактировать чтоб можно было через форму в Page Properties.

Я пробовал создавать в templavoila объект plaintext или bodytext, но он виден только на первой странице и не воспринимает html.

Пробовал создавать TypoScript Object Path, но я так понимаю, его кроме как в setup редактировать не получится?

Tod 17.05.2007 23:13

Почему же, можно засунуть в константы, дабы человек не ковырялся в Setup.
lib.my_text = {$my_text_constant}

Можно создать на главной странице этот текст как content element, а потом заставить отображаться на всех других страницах его же:
lib.myobject_stuff = RECORDS
lib.myobject_stuff.source = 1 (*** element id ***)
lib.myobject_stuff.tables = tt_content

Если делал plaintext , то по идее он должен быть на каждойс странице, где есть данный шаблон. Можно было попробовать сделать какое-то наследование для нужного поля заголовка в шаблоне - мол если есть нужное поле со статическим тексттом не заполнено, то берется значение "уровнем выше"....
Но это как идея. Как ее реализовать я без понятиЯ)

PhilD 17.05.2007 23:30

Цитата:

Как ее реализовать я без понятиЯ)
tv_content_slide

Tod 17.05.2007 23:36

Разве это не только для полей типа "Content Elements"?

PhilD 18.05.2007 00:08

В принципе да. И самый простой вариант - с RECORDS. Но если очень хочется (нужно) сделать через заголовок страницы - можно назначить поле как контент элементс - заодно проблем с HTML не будет - а в раскладке страницы его визуально спрятать при помощи одного из расширений меняющих TV layout.

Tod 18.05.2007 00:53

Кстати какой экст для изменения TV layout посоветуешь? Либо вообще где можно про это почитать? Лазил в TV поле Local Processing, но что-то никакого эффекта не увидел.
В репозитории нашел me_templavoilalayout_0.1.5.t3x - вроде наиболее нормальный + с документацией, также обратил внимание на творение одного из учасников форума rmd_tv_decorator_0.0.1.t3x, но к сожалению без документации ничего не понял:)

PhilD 18.05.2007 01:43

me_templavoilalayout - нормально работает, давно пользуюсь. В принципе еще есть это http://bugs.typo3.org/view.php?id=4387, но это патч :(

Pavel Antonov 18.05.2007 12:16

rmd_tv_decorator - забудьте, работать после изменения TV API не будет.

me_templavoilalayout - тоже ставить не надо, он уже интегрирован в TV.

NiKRON 18.05.2007 13:06

так, так, так... По порядку, что мне нужно сделать?
Я в TemplaVoila создал Поле Element, типа Content Element и замапил его куда мне нужно.
Дальше я иду в setup?
и пишу
lib.myobject_stuff = RECORDS
lib.myobject_stuff.source = 1 (*** element id ***)
lib.myobject_stuff.tables = tt_content
А где я возьму Id этого элемента
И что такое lib.myobject_stuff? Это ещё один элемент?

Можно пошагово, пожалуйста? =)

И кстати как сделать перенос строки в коде? \n не работает.

NiKRON 18.05.2007 14:59

Обманули вы меня, не Content element надо создавать а pagecontent.
Я создал SysFolder и поместил туда PageContent
В templavoila замапил место под TypoScript ObjectPath, назвал lib.address
В Setup шаблона написал:
Код:

lib.address = COA
lib.address{
        10 = RECORDS
        10.tables = tt_content
        10.source = 53
}

Где 10.source = 53 это id pagecontent'a

Но проблема теперь в том, что для pagecontent нельзя создавать перевод. Только для страниц. Как мне сделать чтоб на разных языках по разному было?
Может в setup ветвление по языкам делать? Типа:
если русский, то 10.source = 54,
если английски, то 10.source = 55 и т.д.
Если это можно сделать, то подскажите, пожалуйста как?

Tod 18.05.2007 16:36

Вообще для pagecontent можно создавать же переводы, но ID у них другие и все правильно, что нужно будет указывать 10.source = 54, 10.source = 55.

NiKRON 18.05.2007 16:48

Да но как же делать это ветвление для каждого языка?

PhilD 18.05.2007 16:57

http://typo3.org/documentation/docum...de/1.0.0/view/, а конкретно (с учетом TV) http://typo3.org/documentation/docum...1/3/#id2722835

Tod 18.05.2007 16:57

Непонял? Мультиязыность сделать? Посмотри по форуму по данному запросу, приводился даже код + ссылка на документ, который нужно прочитать - Frontend Localization Guide

ПС. жесть! PhilD, если полазить по форуму, то можно найти как минимум 3 поста твоих и моих в одно время созданных:)

NiKRON 18.05.2007 17:19

Если бы мне нужно было локализовать сайт, то я бы так и спросил. Сайт у меня весь локализован.

Тот код на который дал ссылку PhilD у меня применяется для определения переменной L и назначения языков в зависимости от значения этой переменной.

Я же спрашиваю, как определённому замапенному объекту присвоит значение pagecontent по id, причём id для разных языков должен быть разный.

Tod, вы же сами написали - "Вообще для pagecontent можно создавать же переводы, но ID у них другие и все правильно, что нужно будет указывать 10.source = 54, 10.source = 55."
Так как это ветвление сделать?

Если я просто пишу:
Код:

lib.address = COA
lib.address{
        10 = RECORDS
        10.tables = tt_content
        10.source =53
}

то на всех языках будет одинаковый текст из pagecontent'a с id = 53.

Пробовал написать вот так:
Код:

lib.address = COA
lib.address{
        10 = RECORDS
        10.tables = tt_content
}

config.sys_language_mode = content_fallback
config.sys_language_overlay = 1

config {
        linkVars = L
        uniqueLinkVars = 1
}
[globalVar = GP:L=0]
config {
        sys_language_uid = 0
        language = lv
        locale_all = lv_LV
}
lib.address.10.source = 53
[globalVar = GP:L=1]
config {
        sys_language_uid = 1
        language = ru
        locale_all = ru_RU
}
lib.address.10.source = 54
[globalVar = GP:L=2]
config {
        sys_language_uid = 2
        language = en
        locale_all = en_EN
}
lib.address.10.source = 56
[global]

Но так не работает. Вообще ничего не отображает

NiKRON 18.05.2007 17:31

Нет. Всё таки работает но только в русском(L=1) и английском(L=2) варианте. В латышском (L=0) не работает.
Нет. В латышском работает, но только если явно прописывать в строке браузера адрес: index.php?L=0

Конечно с этим sr_languagemenu путаница происходит. Получается два латышских языка: один дефолтный, а другой для менюшки переключения языков. И этот второй нигде не используется но везде существует возможность создать контент для него, который естественно не будет отображаться.

Updated: Фуууф. Добился того что нужно. Вот так:
Код:

# Address
lib.address = COA
lib.address{
        10 = RECORDS
        10.tables = tt_content
}
lib.address.10.source = 53

## Language Settings
config.sys_language_mode = content_fallback
config.sys_language_overlay = 1

config {
        linkVars = L
        uniqueLinkVars = 1
}
[globalVar = GP:L=0]
config {
        sys_language_uid = 0
        language = lv
        locale_all = lv_LV
}
[global]
[globalVar = GP:L=1]
config {
        sys_language_uid = 1
        language = ru
        locale_all = ru_RU
}
lib.address.10.source = 54
[global]
[globalVar = GP:L=2]
config {
        sys_language_uid = 2
        language = en
        locale_all = en_EN
}
lib.address.10.source = 56
[global]

И последний (наверное) вопрос по этой теме:
Отображается весь контент вместе с заголовком. А как получать только текст, без заголовка?

Tod 18.05.2007 18:30

можешь поискать в TSRef или гугле как для данной конструкции выцепить поле (field) bodytext

NiKRON 18.05.2007 18:53

Никто не хочет помогать. ((
Методом тыка дошёл до результата:
Код:

lib.address = RECORDS
lib.address {
        tables = tt_content
        conf.tt_content = TEXT
        conf.tt_content.data = field:bodytext
        source = 53
}


Pavel Antonov 18.05.2007 18:58

Цитата:

Сообщение от NiKRON (Сообщение 12159)
Никто не хочет помогать. ((

Стимулируем работу серого вещества на форуме :D.
...А то скоро в плесень превратитесь!

Elenka 27.06.2007 11:28

Не получается ничего....ужас просто:confused:

thebat 18.05.2008 21:32

Цитата:

Сообщение от NiKRON (Сообщение 12159)
Никто не хочет помогать. ((
Методом тыка дошёл до результата:
Код:

lib.address = RECORDS
lib.address {
        tables = tt_content
        conf.tt_content = TEXT
        conf.tt_content.data = field:bodytext
        source = 53
}


Все очень просто, если сделать все правильно в соответствии с "Frontend Localization Guide", то должно выглядит вот так:
Код:

lib.Copyright = RECORDS
lib.Copyright {
tables = tt_content
source = 2,3,4
}

где
Код:

source = 2,3,4
Перечисляются записи одного и того же контента, но на разных языках, у меня это работает.


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

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