Можно ли написать конкретный запрос в Typoscript
Мой вопрос может показаться тривиальным, извините, если это так! В настоящее время я изучаю typo3 и typoscript. Я хочу создать шаблон с динамическим фоновым изображением. Это изображение хранится в каталоге. Я хотел бы получить имя изображения из таблицы tt_content. Тем не менее, то, как это работает, немного смущает меня, и я не знаю, правильно ли я это понимаю.
Код выглядит так:
20 = CONTENT
20.table = tt_content
20.select{
where = pid = 79
}
20.headerImagePath = COA
20.headerImagePath {
10 = TEXT
10.stdWrap.field = image
10.stdWrap.wrap = <div class="background-media" style="background-image: url('|'); background-repeat: no-repeat; background-size: cover; background-attachment: fixed; background-position: 50%;" data-start="background-position:50% 50%"
data-70-top-bottom="background-position:50% 70%">
</div>
}
Я хотел бы сохранить информацию об изображении (часть div в коде) в переменной и поместить ее в мой шаблон. Часть шаблона моего кода выглядит так:
<f:format.raw>{headerimage}</f:format.raw>
или же
<f:cObject typoscriptObjectPath="headerimage" />
Поэтому мой вопрос будет таким: правильно ли я выбираю вещи из базы данных и сохраняю их в переменную, и правильно ли я их называю в шаблоне? Если способ, описанный выше, должен работать, но у меня есть небольшие ошибки, это хорошая практика или я должен делать что-то по-другому?
С уважением
Adi
2 ответа
Ваш фрагмент не будет работать, потому что ваша структура очень неправильная.
На
20.headerImagePath = COA
вы пытаетесь создать новый массив объектов CONTENT на объекте CONTENT.
20 = CONTENT
Это не будет работать.
Но у объекта CONTENT есть свойство renderObj.
Посмотрите на следующий пример:
UNTESTED
Попробуйте это так:
lib.headerImagePath = CONTENT
lib.headerImagePath {
# first call the content you need
table = tt_content
select {
# Add your colPos
# In this example i store my header image in colpos 9
where = colPos = 9
# PID from current field or define your own
# pidInList = 123
pidInList.field = uid
languageField = sys_language_uid
}
renderObj = COA
renderObj {
# FILES object was introduced in TYPO3 6.x
10 = FILES
10 {
# Set a reference to let the file object know, where we will get the images
references {
table = tt_content
uid.field = uid
fieldName = image
}
# make sure we only get the first image in set
maxItems = 1
renderObj = COA
renderObj {
# We only need the url and not the complete image. So we need a IMG_RESOURCE and not an IMAGE Object
10 = IMG_RESOURCE
10 {
stdWrap {
wrap = <div class="background-media" style="background-image: url('|'); background-repeat: no-repeat; background-size: cover; background-attachment: fixed; background-position: 50%;" data-start="background-position:50% 50%" data-70-top-bottom="background-position:50% 70%"></div>
required = 1
}
# Import file from current object
# and treat the id as a reference (TYPO3 File Abstraction Layer)
file {
import.data = file:current:uid
treatIdAsReference = 1
}
}
}
}
}
}
Также посмотрите на эти примеры:
Здесь они получают изображение заголовка непосредственно из элемента MEDIA в свойствах страницы:
Чтобы получить изображение заголовка в качестве фона, оно работает также в многоязычной работе с опечаткой 6.x
page.cssInline {
10 = FILES
10 {
references.data = levelmedia:-1, slide
references.listNum = 0
renderObj = TEXT
renderObj.data = file:current:publicUrl
renderObj.wrap (
.title-1 {
background-image: url(../|) !important;
}
)
}
}
спасибо http://www.derhansen.de/2013/02/using-fal-media-in-typo3-60-for-inline.html