vrijdag 7 september 2018

Informatie-architectuur van een webwinkel

Alweer 16 jaar geleden (2002) knutselde ik mijn eerste webwinkel in elkaar op basis van een excelsheet en MijnWinkel-software. Ik vond het geweldig dat het mogelijk was om zonder programmeerkennis een webwinkel te maken en te beheren.

Via Wayback Machine. Helaas worden de afbeeldingen niet getoond.
De artikelendatabase (een excelsheet bij MijnWinkel) ging nog volledig uit van een fysieke winkel: Je deelde je winkel op één vaste wijze in en het artikel plaatste je op één afdeling. Er waren op dat moment alleen nog fysieke winkels dus logisch dat deze wijze van artikelen ordenen was overgenomen. Het zal zich vanzelf wel doorontwikkelen dacht ik destijds optimistisch.
Ik had de volgende 3 wensen die mijn inziens te verwezenlijken moesten zijn met een excelsheet als artikelendatabase:

1. Een artikel op meerdere plaatsen tegelijk zetten
In de fysieke wereld is dat omslachtig. Een supermarkt zal de suiker bij de bakspullen èn bij de koffie & thee moeten plaatsen als hij wilt dat de klant het op beide afdelingen kan vinden.
Als ik destijds in mijn webwinkel een artikel op 2 afdelingen wilde laten zien moest ik, net zoals bij de supermarkt, het artikel op beide afdelingen plaatsen door het te dupliceren waardoor een extra rij in de excelsheet ontstond. Dat had de volgende nadelen:
- De database wordt groter omdat er een rij bij komt.
- De voorraad moet opgesplitst worden. Zo kon het gebeuren dat het artikel in de ene afdeling op uitverkocht stond terwijl het op de andere afdeling nog op voorraad was.
- Als de bezoeker de webwinkel doorzocht kreeg hij dubbele resultaten voor hetzelfde product.
- Ik moest onthouden dat een artikel op meerdere plaatsen stond om het overal te verwijderen als een artikel uit de collectie ging.
Je kunt een artikel op meerdere plaatsen tegelijk zetten als je van de kolom "afdeling" een variabele maakt door meerdere afdelingen tegelijk in dit veld toe te staan. In plaats van een artikel op een vaste afdeling te plaatsen plak je de afdeling(en) als een label aan het artikel.
LABELEN IN PLAATS VAN CATEGORISEREN = wens 1

2. Een winkel op meerdere manieren indelen
In de fysieke wereld is dit niet mogelijk. Een stenen sportwinkel moet een keuze maken, maakt hij afdelingen per sport, per soort artikel (de schoenen bij de schoenen) of op merk?
In de excelsheet is het een kwestie van een kolommetje extra toevoegen. Je maakt een kolom voor de sport, een kolom voor het soort artikel en een kolom voor de merken.
MEERDERE INDELINGSMETHODIEKEN NAAST ELKAAR = wens 2

3. De diepte in met filters
Als je veel verschillende artikelen hebt ontkom je er niet aan om onderafdelingen te maken. Een stenen sportwinkel zal op de schoenenafdeling de voetbalschoenen bij elkaar zetten.
Voor de webwinkel is het een kwestie van het label schoenen combineren met het label voetbal. Je maakt een doorsnede van de verzameling schoenen en de verzameling voetbal.
FILTEREN MET LABELS = wens 3

Mijn inziens is dit de meest logische manier hoe de artikelendatabase (tabel, excelsheet) van destijds zich had moeten ontwikkelen:
  1. De kolom waarmee je artikelen indeelt (of sorteert) kan meerdere waardes in één cel bevatten.
  2. Je kunt meerdere van deze kolommen hebben.
  3. De waardes in deze kolommen kun je met elkaar combineren.
De categorie wordt gelabeld aan het product en met dit label kun je filteren.

Tot zover mijn ideaalbeeld over hoe een artikelendatabase voor een webwinkel (of een andere website met veel artikelen) zich had moeten ontwikkelen. Het volgende stuk gaat over hoe het in werkelijkheid ging. Er bestaat tot mijn verbazing nog steeds geen webwinkelsoftware die werkt zoals ik het zou willen. Allemaal gaan ze uit van databases die mijn inziens onnodig complex zijn èn daardoor minder flexibel zijn.

In 2008 kwamen o.a. SEOshop en Wordpress met die door mij zo felbegeerde labels (tags in het Engels). Wat ik niet snapte is dat ze naast die labels de categorieën in stand hielden. Ik heb destijds gevraagd aan een SEOshop wat het verschil is tussen de woorden in de linkerkantlijn en de woorden in de footer omdat ik identieke woorden zag staan. Het antwoord was dat in de linkerkantlijn de categorieën stonden waarmee je de artikelen indeelt en in de footer labels waarmee je gevonden wilde worden in Google. De categorieën en labels waren aanklikbaar en er verscheen een verzameling artikelen met dat label of uit die categorie. Ik vond dat verwarrend; een menu in de linkerkantlijn èn een menu in de footer. Menu's waar dezelfde woorden in stonden. Bovendien stonden er in de footer veel woorden. Men plempte daar uiteraard alle woorden neer waarop men gevonden wilde worden; meervoud naast enkelvoud, synoniemen, woorden met taalfouten enz.
Labelen als zoekwoordentruc.....
Maar het werkte als een tierelier. SEOshop scoorde dankzij deze zoekwoordentruc de eerste jaren waanzinnig goed bij Google. Totdat iedereen het ging doen en labels hun waarde als zoekwoordentruc verloren.
Als ik destijds overgestapt zou zijn naar SEOshop had ik de kolom "categorieën" leeg gelaten en had ik in de kolom "labels" de categorieën neergezet (= wens 1).
LABELEN ÈN CATEGORISEREN
Wens 1 is niet ÈN maar IN PLAATS VAN!

Door de jaren heen is vrijwel iedere SEOspecialist blijven hameren op een boomstructuur. Een andere naam hiervoor is lineaire hiërarchie of taxonomie. Zo'n structuur maak je door lineaire paden aan te leggen, de zogenoemde broodkruimels. Van hoofdcategorie naar subcategorie. Je stippelt voor de bezoeker een pad uit om je assortiment te ontsluiten. Je maakt een vaste indeling. Bij de sportwinkel moet je het pad schoenen -> voetbal -> Nike volgen om bij de voetbalschoenen van Nike uit te komen. De winkel heeft voor jou beslist welk pad je volgt. Het is een vaste volgorde; van soort artikel naar sport naar merk. Bij een groot assortiment ontstaat al snel een megamenu om alle uitgestippelde paden aan de bezoeker te kunnen tonen. Terwijl je hetzelfde eindresultaat (voetbalschoenen van Nike) kunt bereiken door de bezoeker een sport, een soort artikel en een merk te laten aanvinken. In de volgorde die hij zelf verkiest.
ÉÉN VASTE INDELING MET LINEAIRE PADEN
Wens 2 is op MEERDERE manieren indelen.

Het werd nog erger. Naast de, mijn inziens overbodige, boomstructuur vonden de SEO-cowboys dat je de bezoeker en Google moest laten weten waar het artikel precies staat in die lineaire hiërarchie door middel van de voorkeurscategorie. Daarmee zeg je in feite tegen de bezoeker en Google; dit artikel staat niet op meerdere plekken tegelijk, het staat maar op 1 plek in de hiërarchie. Om dat mogelijk te maken ontstond het door mij zo verfoeide canonical attribuut.
ARTIKEL OP ÉÉN VOORKEURSPLAATS ZETTEN
Wens 1 is een artikel op MEERDERE plaatsen tegelijk zetten.

Op een gegeven moment zagen sommigen in dat zoekwoordentruc-labels weinig toevoegden voor de bezoeker en veranderden de functie ervan in een filter. Men ging het label gebruiken als een "search" binnen een categorie. Een hele vooruitgang.
Ook zagen sommigen in dat producten labelen met categorieën beter werkte dan producten in een categorie plaatsen. "Productpagina's werden rechtstreeks onder de root geplaatst":

Reactie op "Waarom toch vasthouden aan structuur?"
Dhr. Sadon legt hier de vinger op mijn zere plek en heeft het over "Het in tact houden van de gehele structuur". Die structuur is mijn inziens juist hetgeen dat je moet weglaten. Die structuur zorgt ervoor dat je niet kunt filteren met categorieën. De subcategorie schoenen die onder de hoofdcategorie voetbal staat is immers een andere dan de subcategorie schoenen die onder de hoofdcategorie basketbal staat.
FILTEREN MET LABELS
Wens 3 had moeten zijn; filteren met labels DIE CATEGORIEËN ZIJN.

De categorie wordt een label en met dit label kun je filteren.

Het is vooral het vasthouden aan een lineaire structuur dat mijn inziens de voortgang belemmert. Zo'n lineaire structuur (één vaste plaats in één vaste indeling) is in de fysieke wereld (stenen winkel of magazijn) noodzaak om een artikel te kunnen vinden. In de virtuele wereld echter niet, daar kan een artikel prima op meerdere plekken tegelijk staan èn op meerdere manieren gesorteerd (op sport, op soort artikel èn op merk). En met de juiste filters tover je met een paar klikken de gewenste verzameling tevoorschijn.

Het resulteerde in:
  • Webwinkels als Coolblue waar je maar op 1 manier de diepte in kan middels een megamenu.
  • Webwinkels die merk als filter hebben èn als categorie, waar de bezoeker een keuze moet maken; klik ik op die Adidas of op die andere Adidas?
  • Webwinkels die naast een indeling op sport een indeling op soort artikel hebben. Maar waarbij je de schoenen niet kunt filteren op voetbal. Bij Athleteshop was dat zo.
  • Webwinkels waar je nog steeds een artikel moet dupliceren om het in meerdere categorieën te laten zien. Bij Bol krijg je hierdoor als je een product zoekt veel identieke resultaten. Waardoor Bol op een rommelmarkt gaat lijken.
  • Webwinkels waar meer canonicals ingesteld staan dan dat er productpagina's zijn.
  • Webwinkels waar je elkaar uitsluitende filters tegelijk kan selecteren. Bij Athleteshop kon je niet meer leverbaar èn volgende dag in huis tegelijk selecteren en kreeg je nog resultaten ook.
  • Webwinkels waarbij artikelen die uit de collectie zijn toch in de etalage blijven staan omdat niet alle verwijzingen (lineaire paden ernaartoe) zijn weggehaald.
  • Webwinkels waarbij artikelen niet overal verschijnen waar je ze verwacht omdat men 2 plaatsen (= 2 paden) in de lineaire hiërachie voldoende vindt. De luiertas bij de Hema.

Hoofdschuddend heb ik het zien gebeuren. Waar mogelijk geprobeerd het bij webwinkelontwikkelaars de goede richting op te sturen. En me vooral afgevraagd waarom maakt iedereen het zo ingewikkeld terwijl het zoveel simpeler kan? Ik vermoed dat het komt doordat men elkaar na doet. Men volgt.
Ik moest het zelf uit dokteren omdat er in 2002 geen voorbeelden waren om te volgen.

Less is more. Het motto in de footer van dit blog.

Groen = zoals ik het gewenst had
Rood = wat fout gaat
Paars = een link