Product texts: mapping completed; product model: solutions + resources
Two work packages, one deploy.
Workbook field mapping completed (2026-09-18)
- highlights <- g:Technical Highlight (new spec-row component of the
full agency delivery; composeGroup() is generic, no change needed)
- applications <- g:Why Choose Card (benefit cards as one block)
- seometa <- new composed source x:seometa (Introduction body trimmed
at a word boundary to ~155 chars - the SEO sheet ships no meta
description, a trimmed intro beats an empty tag)
- teaser stays the hero one-liner, settling the varchar(255) question
- fix: "Save mapping" now merges over the stored mapping instead of
overwriting it - an empty dropdown no longer wipes a stored selector
Product model: solutions relation and Resources tab (2026-09-24)
- closes the gaps the full workbook walkthrough exposed (rows the
import deliberately skips because the model had no place for them)
- solutions: MM multi select to tx_vitec_domain_model_solution
(tx_vitec_product_solution_mm, relatedprodukt pattern), emitted by
both product renderers as solution cards in the shared shape
- Resources tab: inline child table tx_vitec_product_resource - per
entry a type (documentation/support), an editable card title/text,
an icon (free text with a value-picker seed set) and one link
(page/url/file/record via the link wizard). Deliberately no Extbase
model: only the UserFunc path reads the rows.
- datasheets: own MM selection of download records below the resource
list (tx_vitec_product_datasheet_mm); emitted into the SAME
resources envelope as ready-made type=datasheet cards (title/teaser/
icon from the record, url = the public /download/<slug> route, uid
fallback - private/hidden downloads 404 as everywhere)
- JSON `resources` (detail payload only, like heroimage): list envelope
{layout, items[]}; a hand-written card whose link is empty or
unresolvable is not emitted; layout switches to carousel above three
cards in total
- solutions hybrid (same day, after analysing all 100 workbooks: their
Solution Cards reference the 8 GROUPS in 98% of cases): new is_group
flag on the solution model, new idempotent CLI
vitec:create-solution-groups (8 group records; title source is
AlignSolutionsCommand::TARGET - now public -, category = the group's
own category, detail_page = the /solutions group page with -N
disambiguation). Group records are invisible to the solution list
and to vitec:align-solutions and only selectable in the product
relation; product solution cards carry isGroup
- spec raised to v1.18 (7.15 member table, 7.13.3 note, revision row;
the footer had been stuck at v1.15 since 1.16/1.17)
Requires on the server:
vendor/bin/typo3 database:updateschema "*.add,*.change"
vendor/bin/typo3 cache:flush
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3df66b1353
commit
6811463343
12 files changed
+325
-12
No files matched your search
@@ -723,6 +723,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
|
||||
$this->heroimage = new ObjectStorage();
|
||||
$this->downloads = new ObjectStorage();
|
||||
$this->solutions = new ObjectStorage();
|
||||
$this->datasheets = new ObjectStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1097,6 +1098,29 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
|
||||
$this->solutions = $solutions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Datasheet downloads for the Resources tab (MM)
|
||||
*
|
||||
* @var ObjectStorage<\Evomedien\Vitec\Domain\Model\Download>
|
||||
*/
|
||||
protected $datasheets;
|
||||
|
||||
/**
|
||||
* @return ObjectStorage<\Evomedien\Vitec\Domain\Model\Download>
|
||||
*/
|
||||
public function getDatasheets(): ObjectStorage
|
||||
{
|
||||
return $this->datasheets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ObjectStorage<\Evomedien\Vitec\Domain\Model\Download> $datasheets
|
||||
*/
|
||||
public function setDatasheets(ObjectStorage $datasheets): void
|
||||
{
|
||||
$this->datasheets = $datasheets;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user