Markets List and Detail Plugin

This commit is contained in:
orasche committed 2026-08-05 16:53:02 +02:00
1 parent a739dd8fe3
commit 27cc22dc69
66 files changed
+1078 -5494

No files matched your search

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Market List Settings</sheetTitle>
<type>array</type>
<el>
<settings.layout>
<label>Layout</label>
<description>Display variant for the market cards.</description>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Grid</label>
<value>grid</value>
</numIndex>
<numIndex index="1">
<label>List</label>
<value>list</value>
</numIndex>
<numIndex index="2">
<label>Carousel</label>
<value>carousel</value>
</numIndex>
</items>
<default>grid</default>
</config>
</settings.layout>
<settings.markets>
<label>Markets</label>
<description>Leave empty to show all markets alphabetically. If you select markets, exactly those are shown — in the order you arrange them here (use the arrows to sort).</description>
<config>
<type>select</type>
<renderType>selectMultipleSideBySide</renderType>
<foreign_table>tx_vitec_domain_model_market</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_market.hidden = 0 AND tx_vitec_domain_model_market.deleted = 0 ORDER BY tx_vitec_domain_model_market.title</foreign_table_where>
<size>8</size>
<minitems>0</minitems>
<maxitems>999</maxitems>
</config>
</settings.markets>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
+4
View File
@@ -80,6 +80,10 @@ return [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-locationlist.svg',
],
'vitec-plugin-marketlist' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-marketlist.svg',
],
'vitec-plugin-customerlogos' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-customerlogos.svg',
@@ -101,6 +101,18 @@ tt_content {
}
}
vitec_marketlist < lib.contentElementWithHeader
vitec_marketlist {
fields {
content {
fields {
markets = USER
markets.userFunc = Evomedien\Vitec\UserFunc\MarketListJsonRenderer->render
}
}
}
}
vitec_solutionshow < lib.contentElementWithHeader
vitec_solutionshow {
fields {
@@ -101,6 +101,16 @@ use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
'FILE:EXT:vitec/Configuration/FlexForms/Locationlist.xml'
);
ExtensionUtility::registerPlugin(
'Vitec',
'Marketlist',
'VITEC Market List',
'vitec-plugin-marketlist',
'vitec',
'All markets as grid, list or carousel.',
'FILE:EXT:vitec/Configuration/FlexForms/Marketlist.xml'
);
// Change frame_class to allow multiple selections.
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['renderType'] = 'selectCheckBox';
@@ -24,7 +24,7 @@ return [
],
'types' => [
'1' => [
'showitem' => 'title, subtitle, teaser, description, image,
'showitem' => 'title, slug, detail_page, subtitle, teaser, description, image,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime',
@@ -112,6 +112,34 @@ return [
'default' => '',
],
],
'slug' => [
'exclude' => false,
'label' => 'URL Segment',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'fieldSeparator' => '-',
'replacements' => [
'/' => '',
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInPid',
],
],
'detail_page' => [
'exclude' => true,
'label' => 'Detail Page',
'description' => 'Page that presents this market. Resolved to a URL in the JSON output; leave empty for no link.',
'config' => [
'type' => 'group',
'allowed' => 'pages',
'size' => 1,
'maxitems' => 1,
],
],
'subtitle' => [
'exclude' => true,
'label' => 'Subtitle',
@@ -311,7 +311,7 @@ return [
'label' => 'Applications',
'config' => [
'type' => 'text',
'enableRichtext' => 'true',
'enableRichtext' => true,
'eval' => 'trim',
'default' => ''
],
@@ -322,7 +322,7 @@ return [
'label' => 'Description',
'config' => [
'type' => 'text',
'enableRichtext' => 'true',
'enableRichtext' => true,
'eval' => 'trim',
'default' => ''
],
@@ -334,7 +334,7 @@ return [
'label' => 'Highlights',
'config' => [
'type' => 'text',
'enableRichtext' => 'true',
'enableRichtext' => true,
'eval' => 'trim',
'default' => ''
],
@@ -24,7 +24,7 @@ return [
],
'types' => [
'1' => [
'showitem' => 'title, subtitle, teaser, description, image,
'showitem' => 'title, slug, subtitle, teaser, description, image,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime',
@@ -112,6 +112,23 @@ return [
'default' => '',
],
],
'slug' => [
'exclude' => false,
'label' => 'URL Segment',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'fieldSeparator' => '-',
'replacements' => [
'/' => '',
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInPid',
],
],
'subtitle' => [
'exclude' => true,
'label' => 'Subtitle',