PDA

Просмотр полной версии : Вопросы про устройство базы данных typo3


Ивано
12.12.2012, 16:09
Добрый день.

Хотелось бы немного более детально понять суть концепции заложенной в использование БД-mysq.

А именно пять вопросов

1. Назначение префиксов таблиц (tt_, tx_ temp_, sys_ и других); и когда какой необходимо использовать?

2. Назначение отдельных колонок в таблицах;
(вот uid,pid,deleted,hidden,crdate - это и так ясно

а что значат и для чего используются:

-l18n_cfg
-l18n_parent
-l18n_diffsource
-t3ver_.,.
-cruser_id
- и другие распространенные служебные поля...

3. как работают переводы на другие языки и какие варианты переводов можно создать

4. в чем преимущество использования mm связей - и в чем удобство, или проще использовать обычное поле ссылки на родителя? (так понимаю что при mm одним запросом можно выбирать и категорию, и то что в ней содержится?)

5. А также есть ли Возможность в typo3 создать так сказать внешнее подключение к БД - что бы он выбирал данные из двух и более БД?
Может быть есть какое расширение?

--
Спасибо за ответы.

dmartynenko
13.12.2012, 14:42
1. Разделять таблицы на классы и защититься от путаницы при установке других систем в ту же базу (если поставить phpbb в эту же базу, то его таблицы будут например phpbb_**). И, кажется мне, что функции t3lib_db делают проверки на префиксы (в частности tx_, который зарезирвирован для таблиц пользовательских плагинов). В TSRef точно есть упоминание про такие проверки. Именно поэтому нельзя с помощью TS.CONTENT выбрать записи из be_users (недавно обсуждалось на форуме).

В общем для удобства.

2+3.
l18n - сокращение от английского варианта слова "интернализация".
t3ver - для версионности, воркспейсов.
cruser_id - id BE пользователя, который создал запись

И интернализация и вверсионность используют простое создание копий записи в то же таблице, но с другим содержанием. Эти дополнительные поля позволяют различить что это копии и привязать их к главной (родительской) записи.

Реализация поддержки интернализации в FE требует доработки кода плагинов.

На всякий случай: http://www.slideshare.net/kfish/i18n-in-typo3-flow

4. mm = many to many. Одна новость может указывать на несколько категорий, и одна категория может относиться к нескольким новостям. Без промежуточной таблицы этого не сделать. В TYPO3 их обычно называют *_mm

5. Ядро точно не заставите видеть две базы. Это легко понять если глянуть код t3lib_db

Ивано
14.12.2012, 16:25
Спасибо за ответы.

Ивано
18.12.2012, 17:01
Хотелось бы еще понять как работают переводы на другие языки и какие варианты переводов можно создать

-=UncleByte=-
18.12.2012, 22:01
Хотелось бы еще понять как работают переводы на другие языки и какие варианты переводов можно создатьНастроить можно по-разному и принцип работы будет разный. Подробно описано в мануале Frontend Localization Guide (doc_l10nguide), заодно есть некоторое количество расширений и статей по ним - например languagevisibility помогает увеличить гибкость TV - http://www.typo3-media.com/blog/localisation-secrets.html

Ивано
19.12.2012, 12:21
Есть еще что нибудь из документаций по переводам?

dmartynenko
19.12.2012, 13:06
http://typo3.org/documentation/document-library/guides/doc_guide_l10n_ru/current/

Ивано
19.12.2012, 15:04
Спасибо, это даже очень подходит!

Ивано
26.12.2012, 17:04
Вопросик про связи:
в модуле список есть колонка Ref - связи - своего рода количество использования в других записях (картинка во вложении)...

Это значение о количестве связей как понимаю typo3 пишет в БД таблицы sys_refindex? - или считает как-то по другому?

--
Спасибо.

dmartynenko
26.12.2012, 19:30
Да, в sys_refindex

Если вы будет вставлять записи в таблицы "сырым" SQL кодом, а не через вызовы функций ядра, то связи не будут подсчитываться.

Ивано
05.01.2013, 16:17
http://typo3.org/documentation/document-library/guides/doc_guide_l10n_ru/current/

Почитал данный маниула. Но все равно про переводы остались вопросы. Правильно понимаю, что бы переводить к примеру новости tt_news нужно сначала обязательно:

1. создать новый язык в корне (0-уровень) сайта
2. создать альтерированный язык страницы
3. и только после можно приступить к переводу записей tt_news?
*. и так со всеми элементами...

И как это работает все в сумме не могу понять - ЛИБО получается что на каждый новый перевод создается новая запись - ЛИБО к одной записи прикрепляются переводы по каждому полю из одной какой-то-таблицы?

В мануале нашел описание только трех полей
sys_language_uid, l18n_parent и l10n_mode - где последнее l10n_mode так и не могу понять что делает.

Но в интернете нашел еще не понятные поля, как полагаю связанные с переводом - это l18n_diffsource.

Помогите разобраться с переводами...:)
А также с механизмами, которые существуют по переводам.
Спасибо.

dmartynenko
05.01.2013, 17:13
Давно не делал, но по памяти скажу так.

Пункт 1 обязателен.
Пункт 2 и 3 - это фактически оно и то же, страницы это такие же записи как новости и т.п. Локализуются однотипно и независимо.

Да, на каждый перевод создается копия исходной записи в то же таблице, и вы можете править.

Параметр l10n_mode судя по всему относиться к каждому полю, задается в TCA. И управляет тем, нужно ли "переводить" это поле и как вести себя если перевод для поля не задан.

Кстати может еще это будет вам полезно: http://www.typo3-media.com/blog/localisation-secrets.html

Ивано
05.01.2013, 17:40
Так понял есть два пути локализации: создание двух и более сайтов на разных языках - либо переводы записей в рамках одного сайта...
Спасибо.:)

dmartynenko
05.01.2013, 18:10
Создание двух сайтов можно. Фактически это создание двух и более веток дерева от корня в одном BE, с разными доменами (!) и возможно разными структурами. Локализация заключается лишь в том, что средствами RealURL пользователь направляется на тот домен, который соответствует языку его броузера. И для этого не нужны всякие l18n, l10n.

А локализация в одному дереве - вот это особая фишка TYPO3. Тут удобство в том, что структура, шаблоны, TS делаются один раз. И делается основная ветка сайта на дефолтном языке (например это английский). А потом вы уже постепенно создаете переводы всех записей (страницы - заголовки, метатэги, новости и т.п.). Что не переведете - будет показываться на дефолтом (английском) или не будет показываться вовсе (как настроите).

Получается эти два варианта предназначены для двух разных задач - создать точную копию сайта на другом языке, или создать похожий (или совсем другой) сайт на другом языке.

Ивано
05.01.2013, 19:23
Понял - спасибо.