Просмотр полной версии : Вопросы про устройство базы данных typo3
Добрый день.
Хотелось бы немного более детально понять суть концепции заложенной в использование БД-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
Хотелось бы еще понять как работают переводы на другие языки и какие варианты переводов можно создать
-=UncleByte=-
18.12.2012, 22:01
Хотелось бы еще понять как работают переводы на другие языки и какие варианты переводов можно создатьНастроить можно по-разному и принцип работы будет разный. Подробно описано в мануале Frontend Localization Guide (doc_l10nguide), заодно есть некоторое количество расширений и статей по ним - например languagevisibility помогает увеличить гибкость TV - http://www.typo3-media.com/blog/localisation-secrets.html
Есть еще что нибудь из документаций по переводам?
dmartynenko
19.12.2012, 13:06
http://typo3.org/documentation/document-library/guides/doc_guide_l10n_ru/current/
Спасибо, это даже очень подходит!
Вопросик про связи:
в модуле список есть колонка Ref - связи - своего рода количество использования в других записях (картинка во вложении)...
Это значение о количестве связей как понимаю typo3 пишет в БД таблицы sys_refindex? - или считает как-то по другому?
--
Спасибо.
dmartynenko
26.12.2012, 19:30
Да, в sys_refindex
Если вы будет вставлять записи в таблицы "сырым" SQL кодом, а не через вызовы функций ядра, то связи не будут подсчитываться.
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
Так понял есть два пути локализации: создание двух и более сайтов на разных языках - либо переводы записей в рамках одного сайта...
Спасибо.:)
dmartynenko
05.01.2013, 18:10
Создание двух сайтов можно. Фактически это создание двух и более веток дерева от корня в одном BE, с разными доменами (!) и возможно разными структурами. Локализация заключается лишь в том, что средствами RealURL пользователь направляется на тот домен, который соответствует языку его броузера. И для этого не нужны всякие l18n, l10n.
А локализация в одному дереве - вот это особая фишка TYPO3. Тут удобство в том, что структура, шаблоны, TS делаются один раз. И делается основная ветка сайта на дефолтном языке (например это английский). А потом вы уже постепенно создаете переводы всех записей (страницы - заголовки, метатэги, новости и т.п.). Что не переведете - будет показываться на дефолтом (английском) или не будет показываться вовсе (как настроите).
Получается эти два варианта предназначены для двух разных задач - создать точную копию сайта на другом языке, или создать похожий (или совсем другой) сайт на другом языке.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot