DEV CommiDEV Committ

This commit is contained in:
khaccount committed 2026-07-01 10:34:48 +02:00
1 parent 4541c58fe7
commit c6759186cb
145 files changed
+2742 -579

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
use Evomedien\Vitec\Controller\Backend\StructuredDataController;
/**
* Backend AJAX routes for the VITEC extension.
*
* vitec_structureddata_generate — generate schema.org JSON-LD for a product;
* called by the FormEngine "Structured Data generieren" button. The URL is
* available to JS via TYPO3.settings.ajaxUrls['vitec_structureddata_generate'].
*/
return [
'vitec_structureddata_generate' => [
'path' => '/vitec/structureddata/generate',
'target' => StructuredDataController::class . '::generate',
],
];
+20 -32
View File
@@ -45,38 +45,26 @@
</config>
</settings.download>
<settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>
Default Product List
</label>
<value>0</value>
</numIndex>
<numIndex index="1">
<label>
Variation 1 Product List
</label>
<value>1</value>
</numIndex>
<numIndex index="2">
<label>
Variation 2 Product List
</label>
<value>2</value>
</numIndex>
<numIndex index="3">
<label>
Variation 3 Product List
</label>
<value>3</value>
</numIndex>
</items>
</config>
</settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Datasheet Layout</label>
<value>datasheet</value>
</numIndex>
<numIndex index="1">
<label>Brochure Layout</label>
<value>brochure</value>
</numIndex>
<numIndex index="2">
<label>Neutral Layout</label>
<value>neutral</value>
</numIndex>
</items>
</config>
</settings.layout>
<settings.magstyle>
<label>Magazine Style layout</label>
<config>
+16
View File
@@ -0,0 +1,16 @@
<?php
declare(strict_types=1);
/**
* Importmap registration for VITEC backend JavaScript (ES modules).
* Maps the bare specifier prefix "@evomedien/vitec/" to the extension's
* public JavaScript directory, so modules can be loaded via
* JavaScriptModuleInstruction::create('@evomedien/vitec/<file>.js').
*/
return [
'dependencies' => ['backend', 'core'],
'imports' => [
'@evomedien/vitec/' => 'EXT:vitec/Resources/Public/Javascript/',
],
];
@@ -42,3 +42,86 @@ settings:
category: menu
type: string
default: ''
# ---------------------------------------------------------------------------
# Structured data / schema.org (consumed by StructuredDataService)
# ---------------------------------------------------------------------------
seo.site.canonicalBase:
label: 'Canonical base URL'
description: 'Absolute public base URL of the live site WITHOUT trailing slash, e.g. https://www.vitec.com. Used to build absolute URLs in JSON-LD. Falls back to the request host if empty.'
category: seo
type: string
default: ''
seo.site.name:
label: 'Website name (schema.org WebSite)'
description: 'Display name for the schema.org WebSite node on the home page. Falls back to the organization name if empty.'
category: seo
type: string
default: ''
seo.organization.name:
label: 'Organization name'
description: 'Public organization name for schema.org/Organization. Leave empty to disable Organization output entirely.'
category: seo
type: string
default: ''
seo.organization.legalName:
label: 'Organization legal name'
description: 'Full legal entity name, e.g. "VITEC GmbH".'
category: seo
type: string
default: ''
seo.organization.logoUrl:
label: 'Organization logo URL'
description: 'URL of the organization logo (absolute, or root-relative — will be made absolute). Recommended for Google.'
category: seo
type: string
default: ''
seo.organization.sameAs:
label: 'Social / sameAs URLs'
description: 'Comma- or newline-separated list of official profile URLs (LinkedIn, YouTube, X, …) for schema.org sameAs.'
category: seo
type: string
default: ''
seo.organization.email:
label: 'Contact email'
category: seo
type: string
default: ''
seo.organization.phone:
label: 'Contact phone'
description: 'International format, e.g. +49 89 1234567.'
category: seo
type: string
default: ''
seo.organization.street:
label: 'Address — street'
category: seo
type: string
default: ''
seo.organization.postalCode:
label: 'Address — postal code'
category: seo
type: string
default: ''
seo.organization.locality:
label: 'Address — city'
category: seo
type: string
default: ''
seo.organization.country:
label: 'Address — country (ISO 3166-1 alpha-2)'
description: 'Two-letter country code, e.g. DE.'
category: seo
type: string
default: ''
@@ -134,3 +134,13 @@ tt_content {
# Include menu (navigation) JSON definitions
@import 'EXT:vitec/Configuration/TypoScript/Headless/vitec_menus.typoscript'
# =============================================================================
# Page-level structured data (schema.org JSON-LD @graph)
#
# Organization + WebSite + BreadcrumbList + NewsArticle, auto-generated server
# side from page/site data. The headless frontend wraps the returned string in
# <script type="application/ld+json"> inside the page <head>.
# =============================================================================
page.10.fields.jsonLd = USER
page.10.fields.jsonLd.userFunc = Evomedien\Vitec\UserFunc\PageJsonLdRenderer->render
@@ -29,7 +29,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-25-25-25-25.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -28,7 +28,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-33-33-33.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -27,7 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-33-66.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -27,7 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-50-50.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -27,7 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-cols-66-33.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -26,7 +26,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
]
))
->setIcon('EXT:vitec/Resources/Public/Icons/vitec-container.svg')
->setGroup('vitec')
->setGroup('vitec_custom_components')
->setSaveAndCloseInNewContentElementWizard(true)
);
@@ -192,9 +192,14 @@ return [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim'
'eval' => 'trim',
'fieldWizard' => [
'structuredDataGenerator' => [
'renderType' => 'structuredDataGenerator',
],
],
]
],
],
'keywords' => [
'exclude' => true,
'label' => 'Keywords',
+7 -1
View File
@@ -91,6 +91,10 @@ mod {
}
}
wizards.newContentElement.wizardItems.vitec_custom_components {
header = Custom Components
show = *
}
}
############################################################
@@ -99,10 +103,12 @@ mod {
mod.web_layout.tt_content.preview {
simplecard = EXT:vitec/Resources/Private/Templates/Simplecard/Backendpreview.html
vitec_downloadcard = EXT:vitec/Resources/Private/Templates/Downloadcard/Backendpreview.html
vitec_downloadcardcollection = EXT:vitec/Resources/Private/Templates/Downloadcardcollection/Backendpreview.html
# vitec_usecaseshow = EXT:vitec/Resources/Private/Templates/Usecaseshow/Backendpreview.html
# ^ Pfad anpassen wenn das Template existiert, dann Kommentar entfernen
}
# Hinweis: Content-Blocks-Previews werden automatisch aus
# packages/vitec/ContentBlocks/ContentElements/<n>/templates/backend-preview.html geladen.
# Keine separate Registrierung nötig.
# Keine separate Registrierung nötig.