Вход

Просмотр полной версии : Вопрос по шаблонизации Typo3


mark2013
07.05.2013, 18:16
Добрый день всем участникам!

Я тут новый человек, с typo3 никогда вообще не работал. Но сейчас назрела необходимость внести изменения в вёрстке сайта на typo3. Сайт тестовый поэтому, к сожалению, не могу показать его. Суть в том, что мне человек сказал (с которым мы сотрудничаем) что шаблон находится по пути /fileadmin/template/main_template.tmpl.

Я глянул этот файл, сразу бросилось в глаза то, что на сайте много того, что в файле не прописано явно и нет шаблонных макросов. Обратился за разъяснениями, в результате посмотрел страницу "Шаблоны" в админке. Но там тупо настройки, а где всё-таки лежит html-код? Я сам программист поэтому понимаю, что шаблон генериться из воздуха не может, настройки настройками, но сам html где-то должен быть прописан.

Где же?

P.S. Да, не дописал, версия CMS 4.5.

-=UncleByte=-
07.05.2013, 19:59
Вполне может быть что в TS шаблоне есть ответ на вопрос откуда что берется. Смотрите основной шаблон и подключаемые к нему дополнительные. И это может быть не в чистом виде html, но контент-элементы, описание подробное смотрите в TSRef, есть и русская версия и здесь на typo3.ru и на typo3.org.

mark2013
07.05.2013, 20:12
Вы имеете в виду макросы типа <!--###TEMPLATE###--> ?

-=UncleByte=-
07.05.2013, 20:26
Это не макрос - это метка для шаблонизатора, а в TS указано что выводится вместо этой метки.

mark2013
08.05.2013, 13:15
Ну хорошо, вот абсолютно конкретный вопрос:

В коде страницы имеется:

<?xml version="1.0" encoding="utf-8"?>


в коде файла такого нет. И никаких псевдо-указаний там тоже нет. Чем объяснить?

mark2013
08.05.2013, 13:35
Ещё одна вещь, которой я в упор не понимаю:

Есть код:


temp.mainTemplate {
template = FILE
template.file = fileadmin/template/main_template.tmpl


Но правка указанного файла ничего не даёт, и на сайте размещено совсем не то, что указано в файле. Я просто хочу понять причину...

Ивано++
08.05.2013, 18:02
Возможно если Вы выложите полный код - то Вам помогут быстрее.

mark2013
08.05.2013, 18:04
Полный код чего конкретно?

Ивано++
08.05.2013, 18:05
Ещё одна вещь, которой я в упор не понимаю:

Есть код:


temp.mainTemplate {
template = FILE
template.file = fileadmin/template/main_template.tmpl


Но правка указанного файла ничего не даёт, и на сайте размещено совсем не то, что указано в файле. Я просто хочу понять причину...


Вот этого...
Typoscript

mark2013
08.05.2013, 18:18
TypoScript:


config {
doctype = xhtml_trans
index_enable = 1 # for pages
index_externals = 0 # for documents
no_cache = 0
language = ru
locale_all = ru_RU.UTF-8
baseURL = http://url
simulateStaticDocuments = 0
tx_realurl_enable = 1
admPanel = 1
}

page = PAGE
page.includeCSS {
file1 = fileadmin/html/css/style.css
file2 = fileadmin/html/css/paginator.css
file3 = fileadmin/html/css/galleryview.css
lightbox = fileadmin/html/css/lightbox.css
}

page.headerData.100 = TEXT
page.headerData.100.value = <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?20"></script>

page.headerData.150 = TEXT
page.headerData.150.value = <!--[if gte IE 9]> <script type="text/javascript"> Cufon.set('engine', 'canvas'); </script> <![endif]-->

page.headerData.200 = TEXT
page.headerData.200.value = <script type="text/javascript" src="fileadmin/html/js/jquery.document.ready.js"></script>

page.headerData.300 = TEXT
page.headerData.300.value = <link rel="shortcut icon" href="favicon.ico" />

page.includeJS {
file0 = http://userapi.com/js/api/openapi.js?20
file1 = fileadmin/html/js/jquery-1.7.2.min.js
file2 = fileadmin/html/js/cufon-yui.js
file3 = fileadmin/html/js/BlissPro_400-BlissPro_700.font.js
file4 = fileadmin/html/js/jquery.pngFix.js
file5 = fileadmin/html/js/ddaccordion.js
file6 = fileadmin/html/js/paginator.js
file7 = fileadmin/html/js/jquery.easing.1.3.js
file8 = fileadmin/html/js/jquery.galleryview-1.1.js
file9 = fileadmin/html/js/jquery.timers-1.2.js
// file10 = fileadmin/html/js/galleria.js
file20 = fileadmin/html/js/loopedslider.js
file21 = fileadmin/html/js/google-analytics.js
lightbox = fileadmin/html/js/lightbox.js
}


###
# Top menu setup
###
temp.menu_1 = HMENU
temp.menu_1.excludeUidList = 40
# First level menu-object, textual
temp.menu_1.1 = TMENU
temp.menu_1.1 {
expAll = 1
noBlur = 1
wrap = <div class="main_menu"> | </div>
ACT = 1
IFSUB = 1
ACTIFSUB = 1
NO.allWrap = <div class="allmenu"> | </div>
ACT.allWrap = <div class="allmenu active"> | </div>
IFSUB.allWrap = <div class="headerbar"> | </div>
ACTIFSUB.allWrap = <div class="headerbar active"> | </div>
}
# Second level menu-object, textual
temp.menu_1.2 = TMENU
temp.menu_1.2 {
noBlur = 1
wrap = <ul class="submenu"> | </ul>
# Normal state properties
NO.allWrap = <li> | </li>
# Enable active state and set properties:
CUR = 1
CUR.allWrap = <li class="active"> | </li>

SPC = 1
SPC {
wrapItemAndSub = <li><hr /><div style="display:none">|</div></li>
}
}

###
# Bottom menu setup
###

temp.menu_2 = HMENU
temp.menu_2.excludeUidList = 19, 20, 21, 22, 24, 290, 23
temp.menu_2.wrap = |
# First level menu-object, textual
temp.menu_2.1 = TMENU
temp.menu_2.1 {

expAll = 1
noBlur = 1
ACT = 0
NO = 1
NO.wrapItemAndSub = <div class="fl_left"> | </div>
# Normal state properties
NO.allWrap = <div class="footer_title"><b> | </b></div>
IFSUB = 1
IFSUB.wrapItemAndSub = <div class="fl_left"> | </div>
IFSUB.allWrap = <div class="footer_title"><b> | </b></div>

}
# Second level menu-object, textual
temp.menu_2.2 = TMENU
temp.menu_2.2 {
noBlur = 1
wrap = <ul> | </ul>
# Normal state properties
NO.allWrap = <li> | </li>
# Enable active state and set properties:
CUR = 1
CUR.allWrap = <li> | </li>
}

temp.menu_3 = HMENU
temp.menu_3.wrap = |
temp.menu_3.excludeUidList = 3, 10, 13, 25, 23, 40, 125
# First level menu-object, textual
temp.menu_3.1 = TMENU
temp.menu_3.1 {

expAll = 1
noBlur = 1
IFSUB = 0
NO = 1
NO.wrapItemAndSub = <div class="fl_left"> | </div>
NO.allWrap = <div class="footer_title"><b> | </b></div>
ACT < NO
}

###
# Banners setup
###
plugin.tx_macinabanners_pi1.image.file.maxW = 10000
plugin.tx_macinabanners_pi1.image.file.maxH = 65

lib.banners < plugin.tx_macinabanners_pi1
lib.banners {
# show banners with this attribute, default options are: "top, left, bottom, right", all Descriptions of Banner Categories can be used
placement = 1
templateFile = fileadmin/template/banners.tmpl
#mode to show banners. Options are: all, random
mode = all

# list of page IDs where the banners should be taken from (comma seperated. i.e.: 1,5,7)
pidList = 32

# levels of recursion to search for banners
recursive = 0

# Limit number of banners
results_at_a_time = 2000
}

lib.banners2 < plugin.tx_macinabanners_pi1
lib.banners2 {
# show banners with this attribute, default options are: "top, left, bottom, right", all Descriptions of Banner Categories can be used
placement = 4
templateFile = fileadmin/template/banners.tmpl
#mode to show banners. Options are: all, random
mode = all

# list of page IDs where the banners should be taken from (comma seperated. i.e.: 1,5,7)
pidList = 32

# levels of recursion to search for banners
recursive = 0

# Limit number of banners
results_at_a_time = 2000
}

lib.banners3 < plugin.tx_macinabanners_pi1
lib.banners3 {
# show banners with this attribute, default options are: "top, left, bottom, right", all Descriptions of Banner Categories can be used
placement = 5
templateFile = fileadmin/template/banners_01.tmpl
#mode to show banners. Options are: all, random
mode = all
image.file.maxW = 340
image.file.maxH = 10000
# list of page IDs where the banners should be taken from (comma seperated. i.e.: 1,5,7)
pidList = 32

# levels of recursion to search for banners
recursive = 0

# Limit number of banners
results_at_a_time = 2000
}

lib.partners < plugin.tx_macinabanners_pi1
lib.partners {
# show banners with this attribute, default options are: "top, left, bottom, right", all Descriptions of Banner Categories can be used
placement = 2
templateFile = fileadmin/template/banners.tmpl
#mode to show banners. Options are: all, random
mode = all

# list of page IDs where the banners should be taken from (comma seperated. i.e.: 1,5,7)
pidList = 32

# levels of recursion to search for banners
recursive = 0

# Limit number of banners
results_at_a_time = 2000
}

lib.ipartners < plugin.tx_macinabanners_pi1
lib.ipartners {
# show banners with this attribute, default options are: "top, left, bottom, right", all Descriptions of Banner Categories can be used
placement = 3
templateFile = fileadmin/template/banners.tmpl
#mode to show banners. Options are: all, random
mode = all

# list of page IDs where the banners should be taken from (comma seperated. i.e.: 1,5,7)
pidList = 32

# levels of recursion to search for banners
recursive = 0

# Limit number of banners
results_at_a_time = 2000
}

###
# Gallery setup
###
plugin.tx_jmgallery_pi1 {
pagebrowser.enable = 0
list_pid = 125
album_pid = 127
# single_pid = 13
admin {
repositoryRoot = 14
basePath = fileadmin/gallery/
}
_LOCAL_LANG.default {
pagesText = Перейти на страницу
displayAll = все
}
}
plugin.tx_wtgallery_pi1 {
template.list = fileadmin/template/gal_list.html
list {
width = 285
height = 189
border = 0
image.imageLinkWrap.enable = 0
}
}

###
# News settings
###

plugin.tt_news.templateFile = fileadmin/template/news.tmpl
plugin.tt_news {
singlePid = 33
displayLatest.image {
file.maxW = 282
file.maxH = 0
}
displayList.image {
file.maxW = 282
file.maxH = 0
}
}

###
# Events setup
###
plugin.tx_cal_controller.view.dateFormat = %d %B
plugin.tx_cal_controller {
view.list.heading.1.strftime = %d %B
view.list.event.dateFormat = %d %B
view.dateFormat = %d %B %Y
view.event.event.eventDateFormat = %d %B %Y
view.event.event.dateFormat = %d %B %Y
}
temp.cominsoon = COA
temp.cominsoon {
10 = RECORDS
10.tables = tt_content
10.source = 35
}

temp.toolate = COA
temp.toolate {
10 = RECORDS
10.tables = tt_content
10.source = 34
}

temp.calendar = COA
temp.calendar {
10 = RECORDS
10.tables = tt_content
10.source = 31
}

###
# Feedback setup
###

temp.newmember = COA
temp.newmember {
10 = RECORDS
10.tables = tt_content
10.source = 37
}

temp.another_counters = COA
temp.another_counters {
10 = RECORDS
10.tables = tt_content
10.source = 727
}

###
# search settings
###

plugin.tx_indexedsearch.templateFile = fileadmin/template/indexed_search.tmpl
temp.content = COA
temp.content {
10 < styles.content.get
}
[PIDupinRootline = 49]
temp.content {
20 = RECORDS
20.tables = tt_content
20.source = 413
}
[GLOBAL]

###
# main template setup
###

temp.mainTemplate = TEMPLATE
temp.mainTemplate {
template = FILE
template.file = fileadmin/template/main_template.tmpl
workOnSubpart = MAINTEMPLATE
subparts.MAINMENU < temp.menu_1
# subparts.SEARCHFORM < plugin.tx_indexedsearch
# subparts.CONTACTS < lib.contacts
subparts.MIDCONTENT < temp.content
# subparts.LEFTCONTENT < styles.content.getLeft
# subparts.RIGHTCONTENT < styles.content.getRight
subparts.BOTTOMMENU < temp.menu_2
subparts.BOTTOMMENU1 < temp.menu_3
subparts.BANNERS < lib.banners
subparts.BANNERS2 < lib.banners2
subparts.PARTNERS < lib.partners
subparts.IPARTNERS < lib.ipartners
subparts.COMINSOON < temp.cominsoon
subparts.TOOLATE < temp.toolate
subparts.CALENDAR < temp.calendar
subparts.NEWMEMBERFORM < temp.newmember
subparts.NEWMEMBERFORM >
subparts.NEWMEMBERFORM = TEXT
subparts.NEWMEMBERFORM.value =
subparts.NEWBANNERS < lib.banners3
subparts.webdev < {$webdev}
subparts.ANOTHER_COUNTERS < temp.another_counters
}
#page.10 < temp.headerTemplate
page.10 < temp.mainTemplate
lib.stdheader.stdWrap.dataWrap = <div class="title csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
lib.stdheader.stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
plugin.tx_jmgallery_pi1.thumbnail.file.maxW = 120
plugin.tx_jmgallery_pi1.thumbnail.file.maxW = 285
plugin.tx_jmgallery_pi1.display.ALBUM.pagebrowser. enable = 0
plugin.tt_news.displayList.listImageMode = resize
plugin.tt_news.displayLatest.latestImageMode = resize
plugin.tx_jmgallery_pi1.display.ALBUM.pagebrowser. enable = 1
plugin.tx_jmgallery_pi1.pagebrowser = 1
plugin.tx_jmgallery_pi1.display.ALBUM.pagebrowser. limit = 10
plugin.tx_jmgallery_pi1.display.LIST.dateWrap.strf time = %e %B %Y
config.baseURL = http://url

borodatych
08.05.2013, 18:19
Может быть причина похожа на мою.
Была схожая ситуация.
Насколько я понял typo3 хранит всю верстку в базе.
То есть есть шаблон верстки с какой нужно создать объект.
После создания объекта файл вообще можно удалить.
И последователям, в основном новеньким, уже будет трудно что либо сделать, суть уловили я думаю.
После того как вы поправили верстку, нужно в админке в TemplaVoila (у меня так), обновить объект.
Но это все лично моя ситуация. И возможно я не так изложил ответ.
Поправьте знатоки.

mark2013
08.05.2013, 18:21
Т.е. что получается, страница отрендерилась и файл шаблона более не нужен? так что ли?

borodatych
08.05.2013, 18:24
Я пробовал удалять свои файлы, что бы положить сайт, что бы как то поймать где же эта верстка.
В итоге что искал нашел в базе и далее с помощью данного форума истину.

mark2013
08.05.2013, 18:24
Как-то очень странно получается:

1. Я переименовал файл главного шаблона = сайт перестал грузиться
2. Удалил из шаблона всё содержимое, сохранил - сайт НЕ грузится.
3. Написал в шаблоне "22", сохранил - на сайте НЕ показывается то, что я написал.
4. Правки шаблона не действуют.

Отсюда вывод: шаблон всё-таки рендерится из ФС, но вот что за фишка заставляет игнорить мои правки?.....

mark2013
08.05.2013, 18:30
Кажется я уловил суть проблемы..... нужно каждый раз при правке вёрстки говорить: "Кеши - очистить все кеши" :) тогда всё работает. Я просто раньше работал с CMS, но как правило всё это ловилось на ходу. Первый такой затык был в джумле (там тоже надо было после каждой вёрстки чистить кеш, что очень неудобно). Ну а здесь, видимо, из-за массивности самой системы кешируется всё что может и не может кешироваться :)

-=UncleByte=-
08.05.2013, 18:52
Для разработки можно добавить в TS config.no_cache = 1 и не надо будет каждый раз на кнопку жать. Потом в ноль сбросить для продакшн версии.