typo3 7.4. получить текстовые изображения tt_content через опечатку
Я создаю новую страницу и пытаюсь сделать нижний колонтитул редактируемым в бэкэнде. Поэтому я создал новый текстовый элемент tt_content и через typoscript сохраняю его в переменную:
footerdata = RECORDS
footerdata {
tables = tt_content
source = 165
dontCheckPid = 1
conf.tt_content = COA
conf.tt_content {
10 = TEXT
10.field = header
10.wrap = <h1>|</h1>
20 = TEXT
20.field = bodytext
20.parseFunc =< lib.parseFunc_RTE
20.wrap = <div>|</div>
}
}
И в моем шаблоне я просто добавляю это в нижний колонтитул:
<f:format.raw>{footerdata}</f:format.raw>
Это хорошо работает для заголовка и текста, но я просто не могу понять, как это сделать для изображений. У кого-нибудь есть учебники, ссылки и т. Д., Где я могу это посмотреть? Я пытался гуглить эту проблему, но Typo3 7, кажется, новичок, чтобы иметь какие-либо жизнеспособные советы доступны.
Заранее спасибо!
2 ответа
Мне не очень нравится объект RECORDS; У меня всегда было чувство, что это было загадочно.
Я обычно помещаю такие записи в одну папку sysfolder и затем получаю все содержимое для этого pid.
Старый школьный подход:
lib.address = CONTENT
lib.address {
wrap = |
table = tt_content
select.languageField = sys_language_uid
# uncomment if you want to be more specific
# select.selectFields = bodytext,image,header,header_link
# or if you want to limit by colPos
# select.where = colPos = 6
# This is your "Address" Sysfolder's pid
# It's nice to keep such hardwired values in constants
# ... but of course you can also just do = 123
# select.pidInList = {$pidAddress}
# here, the rendering is done
renderObj=COA
renderObj{
wrap = |
# That's how you process the FAL files
# This is since TYPO3 6.2 btw
5 = FILES
5 {
required = 1
references {
table = tt_content
fieldName = image
}
renderObj = IMAGE
renderObj {
file.import.data = file:current:originalUid // file:current:uid
file.width=654
file.height = 327c
# stdWrap.typolink.parameter.data = file:current:link
altText.data = file:current:description // file:current:title // file:current:alternative
}
}
# Let's say you want the other content here
10 = COA
10 {
1=TEXT
1{
required=1
wrap=<h1>|</h1>
field=header
}
2=TEXT
2{
required=1
wrap=<div>|</div>
field=bodytext
}
}
}
}
И в вашем шаблоне страницы, доступ к cObject как таковой
<f:cObject typoscriptObjectPath="lib.breadcrumb" />
Кроме того, вот более современный подход, который использует текучий шаблон как renderObj:
lib.address = CONTENT
lib.address {
# same as above
wrap = |
table = tt_content
select.languageField = sys_language_uid
# here it's getting different
renderObj = FLUIDTEMPLATE
renderObj {
file = {$customContentTemplatePath}/MyFile.html
layoutRootPath = {$customContentLayoutPath}
partialRootPath = {$customContentPartialPath}
dataProcessing {
// https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Fluidtemplate/Index.html
// available data processors: SplitProcessor, CommaSeparatedValueProcessor, FilesProcessor, DatabaseQueryProcessor, GalleryProcessor
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10.references.fieldName = image
}
//settings {
// type = some_setting
//}
}
}
Вот пример того, как я должен визуализировать этот объект с жидким шаблоном, полностью опционально используя расширение VHS viewhelper (EXT:vhs)
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<div class="small-12 medium-6 large-4 columns">
<f:for each="{files}" as="file">
<v:media.image src="{file}" srcset="1200,900,600" srcsetDefault="600" alt="{file.alternative}" treatIdAsReference="1"/>
</f:for>
<h1>{data.header}</h1>
<div>{data.bodytext}</div>
</div>
<f:comment>
// memory help for debugging:
<f:debug>{data}</f:debug>
<f:debug>{settings}</f:debug>
<f:debug>{file}</f:debug>
</f:comment>
Более правильно, renderObj должен быть заменен DataProcessor. Я еще не готов, хотя.
Другой подход может состоять в том, чтобы использовать расширение VHS и использовать представление render.record:
https://fluidtypo3.org/viewhelpers/vhs/master/Render/RecordViewHelper.html