Het bouwen van een winkel wagen
Maar nu loop ik tegen het volgende aan. Ik bouw nu een winkel wagen class voor een sportschool. Het is geen web winkel waar je even alle producten onder elkaar print. Maar de opbouw moet zo zijn:
-Winkelwagen-
Abonnement:
- flex 19,95
Addons:
- sportwater 5,00
- online app 0,00
Zoals je ziet ziet het er niet ingewikkeld uit. Maar hoe categoreer ik het zodanig dat het juiste soort product onder het juiste kopje komt?
Ga er maar even vanuit dat een product een new Product() object is.
Product flex 19,95 = categorie Abonnement
Product sportwater 5,00 = categorie Addons
Product online app 0,00 = categorie Addons
Het staat eigenlijk gewoon al in je vraag hè ;-)
Dus eigenlijk gewoon een extra property aan Product class toevoegen, waarin ik een categorie meegeef. En in JS waarmee ik de data ophaal, gewoon filteren en loopen aan de hand van de categorie?
>> Dus eigenlijk gewoon een extra property aan Product class toevoegen, waarin ik een categorie meegeef.
Dat klinkt plausibel. OOP-technisch gezien weet ik niet of een categorie een property is. Het product behoort tot een categorie, maar of het dan ook een eigenschap is van het product weet ik niet. Een eigenschap is de kleur geel en de vorm rond. Ik weet niet of een abonnement een eigenschap (property) is. Wellicht druist dit in tegen de OOP-principes, maar daar mogen anderen hun oordeel over vellen :-)
>> En in JS waarmee ik de data ophaal, gewoon filteren en loopen aan de hand van de categorie?
Hoe je dat technisch doet, is aan jou. Ik vind het prettig om views in PHP op te bouwen. Als jij dat in dit geval via JS (ik vermoed AJAX) wil doen, waarschijnlijk vanwege een pop-up dan lijkt me daar niks mis mee.
Maar bedankt voor je tips. Ik ga dat zeker meenemen in het verder ontwikkelen!
Ik zou (indien mogelijk) het wel als category proberen te implementeren, dus een categorie 'Abonnementen' en dat je die categorie bij het aanmaken/instellen van een product in de back-end kunt selecteren. Op die manier kun je ook mooi een categoriepagina maken met alle abonnementen of addons.
Heb je tips hoe ik dat zou kunnen toepasen, in wordpress bijvoorbeeld kan je taxonomies toepassen (categorie) en die aan een post type koppelen, maar mijn producten zijn geen wordpress items maar gewoon custom code.
Ik gebruik WordPress vrijwel nooit. Aangezien je custom code gebruikt, ben je vrij om te doen wat je wilt lijkt mij. Dus dan zou ik denken aan een 'category' tabel met (auto-increment) ID en name. En via een koppeltabel koppel je dan de producten en categorieën aan elkaar.
Ik gebruik geen database voor de producten, aangezien de producten uit een api komen. Misschien zou ik aan de hand van de api call of het nou om een addon of membership gaat uit 1 van die meegeleverde productenm een property kunnen uitlezen om het op de juiste plek in de winkel wagen te tonen
Wat bedoel je dan? Je hebt ze hardcoded in een bestand opgeslagen?
Toevoeging op 16/01/2023 09:03:43:
Jorn Reed op 16/01/2023 09:02:07:
Nope, ik haal alles uit een api op. bijvoorbeeld met `/memberships` haal ik alle abonnementen op, met die informatie kan ik bijvoorbeeld een membership id, prijs etc pakken en die in de cart class gebruiken.
Verder sla ik niets tijdelijk op, maar schiet ik alles bijvoorbeeld gelijk in. Op het moment dat de klant betaald via buckaroo. Dan pak ik de gegevens van de winkel wagen en schiet ik dan bijvoorbeeld pas het abonnement/addons in, die de klant heeft gekozen. Deze gegevens worden ook dus in de api opgeslagen en niet een db tabel of kladblok bestand.
Verder sla ik niets tijdelijk op, maar schiet ik alles bijvoorbeeld gelijk in. Op het moment dat de klant betaald via buckaroo. Dan pak ik de gegevens van de winkel wagen en schiet ik dan bijvoorbeeld pas het abonnement/addons in, die de klant heeft gekozen. Deze gegevens worden ook dus in de api opgeslagen en niet een db tabel of kladblok bestand.
Maar ik vermoed dus dat je bij een externe partij via een API de producten ophaalt en de verkopen ook via die API registreert.
Maar om terug te komen op je vraag, dan zul je dus inderdaad aan de hand van de productkenmerken moeten vaststellen om wat voor product het gaat.
Op het moment dat ik bijvoorbeeld de memberships ophaal met de api, dan weet ik in de code dus dat ik de mmembership producten ophaal, aan de hand daarvan kan ik dat makkelijk dus bepalen. Zelfde geldt dan ook voor addons! :)
Ik neem aan dat je niet realtime de memberships vanuit de API ophaalt? Die kan je prima tussentijds opslaan in de database en via een cron updaten.
Vanuit een class die ik heb gemaakt voor de api calls.
Als ze niet vaak veranderen kan je ze toch prima zelf cachen?
Jup cachen kan, maar als ik de membership niet kan ophalen omdat de api weg valt, dan zou ik ook niet een customer of nieuwe membership aan een customer kunnen toevoegen. Want dit is allemaal connectie met die api.
Gewijzigd op 17/01/2023 11:47:10 door - Ariën -
Ja alles gaat via de api. Ik sla zelf niks (ook niet tijdelijk) op. Als ik bijvoorbeeld memberships ophaal, gebruik ik bijvoorbeeld een specifiek membership id uit die call die ik weer mee-schiet met de customer details. En dat wordt dan weer bij die api opgeslagen.