Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Мастер-класс

Ответ
 
Опции темы Опции просмотра
Старый 14.07.2008, 13:36   #1
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию Структуры в TYPO3

ЗАЧЕМ НУЖНА СТРУКТУРИЗАЦИЯ

Создавая большие порталы, вы облегчаете поиск по файлам как себе, так и другим участникам-разработчикам портала, посчитайте время которое вы тратите в день на поиск и открытие файлов - примерно 10-20 сек (при не структурном хранение файлов), за 1 сессию работы с файлом (10-20 мин), и того выходит 1- 2 мин в час, 10-20 мин в день и того вы тратите на глупый поиск в месяц порядка 6-14 часов ! Это целый рабочий день. Для средней ЗП разработчика потеря составит 2400р. Вам это надо ? Так же, надо учитывать, что в разработку портала могут быть включены доп. ресурсы в виде программистов, верстальщиков и т.д. На повторное изучение среды разработки и структуры портала уходит время как ваше, так и человека, которого вы добавили в проект, порой включение нового человека обходится 1-2 часов в день, в течение месяца, здесь уже не 100 убитых енотов, а во много раз больше. Так что, делая структуру портала более «правильной», чистой понятной вы экономите свои же средства.

СТРУКТУРЫ В TYPO3

Это наверное самый важный аргумент в пользу TYPO, так как сайт на typo в общем то говоря и есть структура.

TS-уровень

Форматирование текста

Старайтесь меньше использовать конструкции вида http://typo3.org/documentation/docum.../11/#id4090185

Пример плохого форматирования:

Код:
lib.leftmenu.20 = HMENU
lib.leftmenu.20.special = userfunction
lib.leftmenu.20.special.userFunc = user_3dsplm_pi2->makeMenuArray
lib.leftmenu.20.1 = GMENU
lib.leftmenu.20.1.NO {
  wrap = <tr><td>|</td></tr><tr><td height="1"></td></tr>
  XY = 163,19
  backColor = white
  10 = TEXT
  10.text.field = title
  10.text.case = upper
  10.fontColor = red
  10.fontFile = fileadmin/fonts/ARIALNB.TTF
  10.niceText = 1
  10.offset = 14,12
  10.fontSize = 10
}
Лучше:

Код:
lib.leftmenu{
  20 = HMENU
  20{
    special = userfunction
    special.userFunc = user_3dsplm_pi2->makeMenuArray <- здесь я использую точку потому что внутри special не будет больше элементов
    1 = GMENU
    1{
      ACT …
      CUR …
      NO{
        wrap = <tr><td>|</td></tr><tr><td height="1"></td></tr>
        XY = 163,19
        backColor = white
        10 = TEXT
        10{
          text{
            field = title
            case = upper   
          }
          fontColor = red
          fontFile = fileadmin/fonts/ARIALNB.TTF
          niceText = 1
          offset = 14,12
          fontSize = 10
        }
      }
    }
  }
}
Читаемость второго варианта увеличивается на порядки.

Структурирование

Храните все ваши настройки внутри lib.
Заведите свою директорию, так чтобы ее название не пересекалось ни с чем в этом мире, я использую .nksh. либо .prme., тем самым получится, что все ваши персональные настройки будут храниться в lib.[ваш дир.]..

Двигайтесь от общего к частному, например если вы запрограммировали расширение, где порядка 10-20 отдельных настроек помещайте их в соответствующую директорию к которым она относится например:
lib.prme.blog – основная директория в которой будут храниться настройки для блога.
lib.prme.blog.config – здесь конфигурацию, при этом объявляйте ее раньше остальных элементов, чтоб была возможность копирования директорий
lib.prme.blog.views – здесь мы будем хранить модули вывода, например (вывод одной записи, листа, облако тегов, самые крутые комментаторы и т.д.)
lib.prme.blog.forms – а здесь только формы ввода данных

TS-наследование

Сначала опишите основные черты вашего объекта (набора конфигурации), а дальше только уточняйте.

Например у вас есть 3 таблицы с 3 колонками, только в одной берутся данные из таблицы пользователей, в другой из таблицы группы пользователей, в третьей тоже из таблицы пользователей, но с другим набором полей как это будет выглядеть:

Код:
lib.prme.blog.config.my_table_1 = CONTENT
lib.prme.blog.config.my_table_1{
  table = …
  select{
    …
  }
  renderObj = COA
  renderObj{
    10 = TEXT
    10.field = …
    20 = TEXT
    20.field = …
    30 = TEXT
    30.field = …
  }
}

lib.prme.blog.views.my_view_1 < lib.prme.blog.config.my_table_1
lib.prme.blog.views.my_view_1{
  table = fe_users
  renderObj{
    10.field = uid
    20.field = username
    30.field = rating
  }
}

lib.prme.blog.views.my_view_2 < lib.prme.blog.config.my_table_1
lib.prme.blog.views.my_view_2{
  table = fe_groups
  renderObj{
    10.field = uid
    20.field = groupname
    30.field = num
  }
}

lib.prme.blog.views.my_view_3 < lib.prme.blog.views.my_view_1 lib.prme.blog.views.my_view_3{
  renderObj{
    30 > 
    30 = IMAGE
    30{
       … send mail image config
    }
  }
}
Что у нас вышло:

Мы создали конфиг (lib.prme.blog.config.my_table_1), который описывает общие черты таблицы.

lib.prme.blog.views.my_view_1 унаследовала lib.prme.blog.config.my_table_1
lib.prme.blog.views.my_view_2 унаследовала lib.prme.blog.config.my_table_1
lib.prme.blog.views.my_view_3 унаследовала lib.prme.blog.views.my_view_1

Хранение файлов

Все пользовательские файлы хранятся в папке fileadmin/, если вы используйте TV, либо не используете, все равно храните ваши файлы внутри fileadmin/templates/, дальше можете поступать как вам удобней, главное логически отделяйте файлы и папки, как делаю я:

Код:
fileadmin
 -templates
   -tpl                – для общих шаблонов,
     -i                – картинок к шаблону,
   -ts                – общих TS-файлов,
   -ttf                – шрифтов,
   -user_func            – общих пользовательских ф-ий
   -ext
     -[myExtName]        – Сюда можно помещать ваши расширения,
порой хранить расширения в typo3conf/ext/ не удобно, особенно в 
период разработки, сохраняйте структуру файлов похожую, как в 
родительском узле (шаблоны в tpl, картинки в i, и т.д.).
     -[3rdPartyExt]        – Файлы модифицированных расширений 
можно помещать сюда пример:
     -tt_news
       -tpl
         -anotherOne.tpl.html    – модифицированный шаблон для tt_news
Наименование и объем файлов

Старайтесь, чтобы размер одного файла не превышал 300-400 строк, иначе в нем становится тяжело ориентироваться. Для одного файла хватит 1-3 контейнеров конфигурации. Названия файлов лучше использовать такими, как и путь в вашем TS-конфиге, например:

Код:
== TS ==
lib.prme.blog.views.my_view_1
лучше хранить в

Код:
fileadmin/templates/ext/blog/ts/views.my_view_1.ts
Тем самым, вы с легкостью сможете его найти, зная его путь в TS, либо зная название файла.

Большое спасибо за внимания, с уважением, Никитин Сергей.
PS. Дополнения и ошибки пишите, буду очень признателен.

Последний раз редактировалось Valery Romanchev; 14.07.2008 в 17:10
Sergey M Nikitin вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ВЕ TYPO 4.0.4 на MySQL 5.0.27 не отображает русских букв! Юрий Локализация проекта 9 01.03.2007 20:16
можно ли сделат редирект в Typo? kirill_schwez Общие вопросы 2 02.05.2006 20:33
Typo ne generit ssilki na kartinki (src=\" \") IM 6.2 Yevgeniy Установка 1 03.10.2005 17:45
Typo для профессионалов или для всех Михаил Вопросы выбора CMS 1 03.06.2005 23:15
Configuring Typo for UTF-8 Joel Guesclin Установка 1 29.11.2003 23:35


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория