我想用图像扩展tt_content表。应该可以在每个内容元素中设置此图像。这是我到目前为止
ext_tables.sql
CREATE TABLE tt_content (
tx_layout_background_image int(11) unsigned DEFAULT '0' NOT NULL,
);
打字文件:
page.10 = FLUIDTEMPLATE
page.10 {
templateName = TEXT
templateName.stdWrap.cObject = CASE
templateName.stdWrap.cObject {
key.data = pagelayout
pagets__kubus_layout = TEXT
pagets__kubus_layout.value = Default
default = TEXT
default.value = Default
}
templateRootPaths {
0 = {$resDir}/Private/Templates/Page/
}
partialRootPaths {
0 = {$resDir}/Private/Partials/Page/
}
layoutRootPaths {
0 = {$resDir}/Private/Layouts/Page/
}
dataProcessing {
20 = TYPO3CMSFrontendDataProcessingFilesProcessor
20 {
references {
table = tt_content
uid.field = uid
fieldName = tx_layout_background_image
}
as = images
}
}
}
覆盖/tt_content.php
<?php
$temporaryColumn = array(
'tx_layout_background_image' => [
'label' => 'BG Image',
'config' => TYPO3CMSCoreUtilityExtensionManagementUtility::getFileFieldTCAConfig(
'tx_layout_background_image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'columns' => [
'crop' => [
'description' => 'field description',
],
],
'types' => [
TYPO3CMSCoreResourceFile::FILETYPE_IMAGE => [
'showitem' => '
--palette--;;imageoverlayPalette,
--palette--;;filePalette'
],
],
],
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
);
TYPO3CMSCoreUtilityExtensionManagementUtility::addTCAcolumns(
'tt_content',
$temporaryColumn
);
TYPO3CMSCoreUtilityExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'layout',
'tx_layout_background_image',
'after:layout'
);
TYPO3CMSCoreUtilityExtensionManagementUtility::addToAllTCAtypes(
'tt_content',
'--div--;Layout,
--palette--;;layout',
'',
''
);
问题是我只是在数据数组
中得到这个data.tx_layout_background_image => 1 (integer)
我怎么能得到这个图像?我尝试了它与治疗参考,但我没有得到正确的图像对象。
编辑
这似乎工作
lib.contentElement {
dataProcessing.99 = TYPO3CMSFrontendDataProcessingFilesProcessor
dataProcessing.99 {
as = backgroundImages
references.fieldName = tx_layout_background_image
references.table = tt_content
}
}
您在字段中找到的1
是对该字段的引用数。实际的关系存储在另一个记录中。
由于发明了FAL(文件抽象层),对文件的引用不再存储为文件的路径和名称,而是由记录(sys_file
)表示,其中存储了路径和名称(以及进一步的信息)。与表sys_file_reference
中的mm-records建立关系。它由
uid_local
(sys_file
记录的uid
)uid_foreign
(相关记录的uid
)tablenames
(相关记录的表名:在你的案例中是tt_content
)fieldname
(该记录中的字段名,因为可能有多个具有文件关系的字段:您的字段名:tx_layout_background_image
)sorting_foreign
(如果多个文件可以关联则给出命令)table_local
(总是sys_file
)
现在可以对这些相关的记录进行显式查询了。
但是你也可以使用一个数据处理器,它可以为你处理它:
当你使用文件时,它应该是一个文件处理器,因为你在代码中使用它。
但是你错过了正确的上下文。
您将字段插入错误的表(tt_content
而不是pages
)。
或者您在错误的表上使用了文件处理器:tt_content记录的呈现不是在page.10
中完成的,而是在tt_content.<cType>
中完成的,如:
的例子:
tt_content.my_custom_ctype = FLUIDTEMPLATE
tt_content.my_custom_ctype {
:
dataProcessing.10 = TYPO3CMSFrontendDataProcessingFilesProcessor
dataProcessing.10 {
as = backgroundImages
references.fieldName = tx_layout_background_image
references.table = tt_content
}
}
如果你想把它添加到每一个cType,你可以把它添加到lib.contentElement
原型的所有内容元素,从那里它被复制/引用到所有的cTypes。
lib.contentElement {
dataProcessing.10 = TYPO3CMSFrontendDataProcessingFilesProcessor
dataProcessing.10 {
as = backgroundImages
references.fieldName = tx_layout_background_image
references.table = tt_content
}
}