Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[!!!][FEATURE] Parent/child relationships with data inheritance by product type #247

Merged
merged 75 commits into from
Feb 11, 2021

Conversation

mabolek
Copy link
Contributor

@mabolek mabolek commented Jan 7, 2021

Fixes #224.

  • Products use a parent/child relationship built around a Product's parent property.
  • The Product sub_product property is replaced by a virtual (non-persisted) children property, which relies on the parent.
  • The above changes removes the reliance on an MM table for product variants/sub product, reducing the number of table joins and improving performance.
  • When saving a Product record in the Backend, all child products will automatically be updated with data from inherited properties. This is similar to TYPO3's inherited non-localized properties. Although it slows down save operations in the backend, this is a performance boost for read operations in the frontend, as no overlays need to be processed during rendering.
  • When editing a child product, inherited properties are not editable and include an information text ("Inherited from parent product.")
  • When editing a child product, editable fields display the parent product's value below the input field.
  • In the Product edit form, fields in the Relations tab have been migrated from type select to group. This is a performance boost in large installations because a list of all available products is no longer loaded with the field.
  • Removed showRecordFieldList in TCA because it is no longer used by TYPO3 (deprecated and ignored).
  • Attributes are now using a real TCA-defined inline relation with full support for inheritance (the inline styling is modified using CSS to make them look like normal fields). This removes support for attribute sets in different tabs (at least temporarily), but it resolves a number of issues relating to custom data persistence functions. Everything is now using DataHandler, datamap, and cmdmap for full TYPO3 core support (including correct relation management and reference table indexing).

Not implemented, but a good idea for later:

  • Button in the doc header for "Create new child product", which automatically creates a product with parent set (and inherited values updated).

Edit product type: Select fields to be inherited by child products.
image

Inherited properties are not editable and non-inherited properties display the value for the parent product below the input field.
image

Fields in the Relations tab have been migrated from type select to group.
image

Attributes are now using a real TCA-defined inline relation with full support for inheritance.
image

@mabolek mabolek linked an issue Jan 7, 2021 that may be closed by this pull request
5 tasks
@mabolek mabolek marked this pull request as ready for review February 10, 2021 18:36
@pixelmatseriks pixelmatseriks merged commit e541d69 into v10_alpha Feb 11, 2021
@pixelmatseriks pixelmatseriks deleted the 224-improve-be-ux branch February 11, 2021 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Variants: Improve backend UX
2 participants