#typo3 #typo3-9.x
#typo3 #typo3-9.x
Вопрос:
как я могу правильно добавить пользовательское поле изображения в tt_content? Я сделал первую часть с Overrides/tt_content.php и в ext_tables.sql, и, таким образом, я могу видеть новое поле в серверной части, а в контексте интерфейса я получаю data.tx_pnbase_icon.
Но я не могу выбрать изображение в серверной части, и оно не будет сохранено, даже если всплывающее окно со списком файлов работает.
Должен ли я указывать tt_content для соединения поля с sys_file_reference (в Typoscript)? Или мне вообще нужно расширять модель содержимого?
<?php
$temporaryColumn = array(
'tx_pnbase_icon' => [
'label' => 'Icon für Inhalt',
'config' => TYPO3CMSCoreUtilityExtensionManagementUtility::getFileFieldTCAConfig(
'tx_pnbase_icon',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFilegallery'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
TYPO3CMSCoreResourceFile::FILETYPE_TEXT => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
TYPO3CMSCoreResourceFile::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
TYPO3CMSCoreResourceFile::FILETYPE_AUDIO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
TYPO3CMSCoreResourceFile::FILETYPE_VIDEO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
TYPO3CMSCoreResourceFile::FILETYPE_APPLICATION => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_gallery.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
]
],
'foreign_match_fields' => [
'fieldname' => 'tx_pnbase_icon',
'tablenames' => 'tt_content',
'table_local' => 'sys_file',
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
);
TYPO3CMSCoreUtilityExtensionManagementUtility::addTCAcolumns(
'tt_content',
$temporaryColumn
);
TYPO3CMSCoreUtilityExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'appearanceLinks', // layout
'tx_pnbase_icon',
'after:layout' // 'after:' layout
);
В ext_tables.sql
CREATE TABLE tt_content (
tx_pnbase_icon int(11) unsigned NOT NULL default '0'
);
Комментарии:
1. Можете ли вы поделиться своим PHP-кодом изнутри
Overrides/tt_content.php
? Я также не до конца понимаю, невозможно ли выбрать изображение и сохранить его, или проблема заключается только в получении изображения во внешнем интерфейсе.2. Я добавил код из Overrides/tt_content.php
3. Спасибо, вы можете ответить на мой 2-й вопрос? Также вы добавили ext_tables.sql или скорректировали существующий столбец с новым столбцом для вашего нового поля tx_pnbase_icon?
4. Извините, не понял ваш второй вопрос; но я очень благодарен, что вы готовы мне помочь! Я собираюсь расширить свой первоначальный вопрос.
5. Это очень странно; теперь внезапно я могу выбрать изображение и сохранить его !? Но как мне получить правильный исходный файл изображения, а не только «1» во внешнем интерфейсе?
Ответ №1:
TYPO3 по умолчанию сохранит только количество связей внутри столбцов. В случае, если вы работаете с TypoScript FLUIDTEMPLATE
, вы можете использовать обработку данных для разрешения отношений файлов. Смотрите https://docs.typo3.org/m/typo3/reference-typoscript/10.4/en-us/ContentObjects/Fluidtemplate/Index.html#dataprocessing для ознакомления с концепцией и https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/frontend/Classes/DataProcessing/FilesProcessor.php для использования конкретным процессором. У всех процессоров есть пример использования в их PHPDoc.
В случае, если вы используете обычный TypoScript, вы должны иметь возможность использовать FILES
CObject: https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Files/Index.html#cobj-files .
https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/ApiOverview/Fal/UsingFal/Frontend.html содержит полный обзор того, как извлекать файлы.
Комментарии:
1. Спасибо! Я не был уверен, есть ли более простое решение; Я понял это в прошлом с помощью ViewHelper…