TYPO3扩展tt_content与FAL图像和显示在前端



我想用图像扩展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
}
}

相关内容

  • 没有找到相关文章

最新更新