Helpcenter

Documentatie catalogus-module

Gewijzigd op

Dit artikel bevat informatie met betrekking tot het inrichten en ontwikkelen van een template voor de Catalogus-module.

Informatie over de module

De catalogus-module is bedoeld voor het maken van een kleine catalogus.

De module bestaat uit:

  1. Een backend waarmee een catalogus kan worden opgebouwd, zoals het aanmaken van velden en beheren van de catalogus-items.
    
  2. Een frontend-toolkit waarmee een frontend developer de template van de catalogus kan bouwen.
    

De module is niet geschikt voor:

  1. Grote, complexe catalogi, bijvoorbeeld met een meerlaagse categoriestructuur en verschillende objecttypen. Hiervoor moet maatwerk gebouwd worden.
    
  2. Catalogi waarbij voorraad, prijslijsten, bestellen, betalen of synchroniseren met externe pakketten nodig is. Wellicht is de E-Commerce (add-on) een betere keuze in zulk geval.
    

Inrichting

Overzicht

Een catalogus heeft de volgende structuur:

  • Templates
    
    • Velden
    
      • Items
    

Rollen en rechten

We onderscheiden vier rollen in deze module:

  1. De ontwikkelaar ontwerpt en bouwt de catalogus. Hij maakt velden aan en maakt een UI en Twig-templates waarin die velden worden vormgegeven. Hiervoor is PRIV_ADMIN op mod_catalog nodig. Dit kan een medewerker van Procurios zijn of een partner.
    
  2. De beheerder kan catalogi, velden en items beheren. Hiervoor is PRIV_ADMIN op mod_catalog nodig. Dit kan een medewerker van Procurios zijn, een partner of een getrainde klant.
    
  3. De gebruiker kan in een catalogus items beheren. Hiervoor is PRIV_MODIFY op mod_catalog nodig. Het beheer van een catalogus kan worden beperkt tot een bepaalde groep gebruikers. Dit kan een partner of een klant zijn.
    
  4. De bezoeker kan een catalogus bekijken als deze is gepubliceerd op een website. Hiervoor hoeven geen rechten te worden ingesteld.
    

Snippets

Parallel aan de rollen zijn er drie ingangen in de module:

  1. De modulepagina wordt alleen gebruikt voor de beheerder en is afgeschermd met PRIV_ADMIN op mod_catalog.
    
  2. Het ManageCatalogSnippet wordt gebruikt voor het beheer van items door de gebruiker, en is afgeschermd met PRIV_MODIFY op mod_catalog.
    
  3. Het PublishCatalogSnippet wordt gebruikt om een catalogus op een website te publiceren en kan door bezoekers worden bekeken.
    
  4. Het PublishItemSnippet wordt (optioneel) gebruikt om de items van een catalogus op een specifieke pagina te publiceren. Hiermee kunnen artikelen rond het catalogus-item geplaatst worden, en een mooie URL worden gebruikt m.b.v. een alias. Als dit snippet niet gebruikt wordt, krijgt een catalogus-item een /k-pagina.
    

Velden

Overzicht

Bij het bouwen van de catalogus kunnen de volgende velden worden gebruikt:

  • Getal: Getal, geformateerd, met prefix/postfix
  • Tekst (textfield)*: Eénregelig tekstveld
  • Tekst (textarea)*: Meerregelig tekstveld
  • Tekst (html)*: HTML tekstveld
  • Keuze (selectbox): Eén-uit-meer keuze
  • Keuze (radiobuttons): Eén-uit-meer keuze
  • Keuze (checkbox): Meer-uit-meer keuze
  • Afbeeldingen: Eén of meerdere afbeeldingen
  • Documenten: Eén of meerdere documenten
  • Video: Video uit cloudservice (YouTube, Vimeo)
  • Google Maps: Coördinaat

*) Van de tekst-velden is een meertalig alternatief beschikbaar. Voor details, zie verderop.

Bij een veld kan het volgende worden ingesteld:

  • Titel: Om het veld op het scherm te identificeren.
  • Naam: Om het veld in code te identificeren.
  • Ondertitel: Helpt de gebruiker het veld in te vullen (optioneel)
  • Type: Soort veld (zie het lijstje hierboven)
  • Standaardwaarde: De uitgangswaarde bij aanmaken van nieuw item (optioneel)
    • letterlijke tekst voor tekstvelden
    • de 'key' voor één-uit-meer-velden
    • de 'keys' voor meer-uit-meer-velden (bijvoorbeeld 1,2,3)
  • Is verplicht?: Geeft aan of het veld verplicht gevuld moet worden
  • Volgorde:  Geeft de volgorde aan in het formulier en de output (optioneel)

Velden kunnen ingedeeld worden in secties en tabs op het catalogus invoer / bewerk formulier.

Getal

Dit veld kan worden gebruikt voor getallen. Bij sorteren en filteren wordt rekening gehouden met de natuurlijke ordening van getallen (11 komt voor 100).

De volgende opties kunnen worden gebruikt:

  • decimals: aantal decimalen
  • prefix: tekst die voor het getal getoond wordt (bijvoorbeeld valuta-teken)
  • postfix: tekst die na het getal getoond wordt (bijvoorbeeld eenheid zoals km)

Dit veld levert in het Twig-template het volgende object op:

array (size=9)
      'type' => string '1' (length=1)
      'typeName' => string 'Nummer' (length=6)
      'name' => string 'distance' (length=8)
      'title' => string 'Afstand' (length=7)
      'value' => string '10,00 km' (length=8)
      'raw' => string '10' (length=2)
      'formatted' => string '10,00' (length=5)
      'prefix' => string '' (length=0)
      'postfix' => string 'km' (length=2)

Tekst (textfield)

Een eenregelig tekstveld. Maakt geen gebruik van het opties-veld.

Dit veld levert in het Twig-template het volgende object op:

array (size=5)
      'type' => string '2' (length=1)
      'typeName' => string 'Tekst (textfield)' (length=17)
      'name' => string 'city' (length=4)
      'title' => string 'Woonplaats' (length=10)
      'value' => string 'Utrecht' (length=7)

Tekst (textarea)

Een meerregelig tekstveld. Maakt geen gebruik van het opties-veld.

Dit veld levert in het Twig-template het volgende object op:

array (size=5)
      'type' => string '3' (length=1)
      'typeName' => string 'Tekst (textarea)' (length=16)
      'name' => string 'description' (length=11)
      'title' => string 'Omschrijving' (length=12)
      'value' => string 'Test 123' (length=8)

Tekst (html)

Een html-tekstveld. Via de optie 'mode' kan de modus worden ingesteld op één van onderstaande:

  • advanced: alle opties, inclusief tabellen
  • basic: de meest gebruikte opties
  • minimal: minimale opmaakopties
  • simple: TinyMCE in 'simple'-modus
  • singleline: editor op één regel

De standaard-waarde is 'basic'.

Let op: de gebruiker kan in dit veld alle html invoeren en daarmee (dus) ook de opmaak van de pagina verstoren.

Dit veld levert in het Twig-template het volgende object op:

array (size=5)\L      
	'type' => string '4' (length=1)
	'typeName' => string 'Tekst (html)' (length=12)\L
	'name' => string 'description' (length=11)\L
	'title' => string 'Omschrijving' (length=12)\L
	'value' => string '<p>Text html</p>' (length=xxx)

Meertalige tekst

Van de drie tekst-veldtypen is een meertalige variant beschikbaar. Bij deze veldtypen wordt de waarde opgeslagen in de actieve talen van de implementatie. Ook de standaardwaarde is meertalig.

In de Twig-output worden alle talen geoutput. Je kunt daardoor zelf bepalen wat het gedrag is met betrekking tot fallback.
Bijvoorbeeld:

  • Als er geen waarde is in de huidige taal - toon dan niets.\L
  • Als er geen waarde is in de huidige taal - toon dan een willekeurige andere taal.\L
  • Als er geen waarde is in de huidige taal - toon dan een specifieke andere taal.\L

De waarde heeft de volgende vorm:

array (size=5)
\L      'type' => string '2' (length=1)
\L      'typeName' => string 'Tekst (textfield)' (length=17)
\L      'name' => string 'city' (length=4)
\L      'title' => string 'Woonplaats' (length=10)
\L      'value' =>
 \L        array (size=4)
\L          'en' => string 'hello' (length=5)
\L          'de' => string 'deutsch' (length=7)\L
          'fr' => string 'croissant' (length=9)
\L          'nl' => string 'hai hai' (length=7)

Je toont de waarde in de huidige taal als volgt:

{{ item.fieldName.value[environment.language] }}

in plaats van (bij een niet-meertalig veld):

{{ item.fieldName.value }}

Keuze (selectbox)

Een één-uit-meer keuzeveld met een selectbox.

Het opties-veld wordt gebruikt voor de keuzeopties, in de vorm 'key: value, bijvoorbeeld:

  • 1: Audi
  • 2: Peugeot
  • 3: Renault
  • 4: Volkswagen

De key kan worden gebruikt om de optie aan te duiden bij het filteren. Het is niet per se nodig om getallen te nemen, het volgende werkt ook:

  • m: Man
  • v: Vrouw

Dit veld levert in het Twig-template het volgende object op:

array (size=6)
\L      'type' => string '5' (length=1)
\L      'typeName' => string 'Keuze (selectbox)' (length=17)
\L      'name' => string 'car' (length=3)
\L      'title' => string 'Auto' (length=4)
\L      'key' => string '3' (length=1)\L
      'value' => string 'Renault' (length=7)

Keuze (radiobuttons)

Een één-uit-meer keuzeveld met radiobuttons. Het opties-veld wordt gebruikt voor de keuzeopties, zie de selectbox hierboven.

Dit veld levert in het Twig-template het volgende object op:

array (size=6)
      'type' => string '6' (length=1)
      'typeName' => string 'Keuze (radiobuttons)' (length=20)
      'name' => string 'gender' (length=6)
      'title' => string 'geslacht' (length=8)
      'key' => string 'v' (length=1)
      'value' => string 'Vrouw' (length=5)

Keuze (checkbox)

Een meer-uit-meer keuzeveld met checkboxes. Het opties-veld wordt gebruikt voor de keuzeopties, zie de selectbox hierboven.

Dit veld levert in het Twig-template het volgende object op:

array (size=7)
\L      'type' => string '7' (length=1)
\L      'typeName' => string 'Keuze (checkbox)' (length=16)\L
      'name' => string 'cars' (length=11)
\L      'title' => string 'Automerken' (length=10)
\L      'keys' => \L        array (size=2)
\L          0 => string '1' (length=3)
\L          1 => string '3' (length=4)
\L      'values' =>
 \L        array (size=2)
\L          '1' => string 'Audi' (length=3)
\L          '3' => string 'Renault' (length=4)
\L      'value' => string 'Audi, Renault' (length=9)

Afbeeldingen

Dit veld kan worden gebruikt voor afbeeldingen. De afbeeldingen zijn te sorteren in het lijstje.

De volgende opties kunnen worden gebruikt:

  • width: Gewenste breedte in pixels, zonder px erachter.
  • Vervang door imageWidth bij gebruik van 'gallery'.
  • height: Gewenste hoogte in pixels, zonder px erachter.
  • Vervang door imageHeight bij gebruik van 'gallery'.
  • gallery: Gebruik 'gallery' als weergave (type 1, 2, 3 of 4). Zie dit artikel voor meer info
  • source: waarden:
    • upload => afbeelding uploaden bij item
    • library => afbeelding kiezen uit library
  • multiple: waarden:
    • 0 => Max 1 foto (is standaard bij 'library')
    • 1 => Meerdere foto's (is standaard bij 'upload')
  • scaleType: 1, 2, 3, 4 of 5. Ziet dit artikel voor meer info
  • color: De achtergrondkleur die gebruikt wordt bij het schalen (scaleType 2 en 5)

Over width en height: het is ook toegestaan om één van de twee op te geven, de ander wordt dan berekend.

In het Twig-object is de 'urlRaw' toegevoegd, waarmee je eventueel de afbeelding in andere formaten kunt opvragen, door er zelf width= en height= achter te plakken.

Dit veld levert in het Twig-template het volgende object op:

array (size=6)
\L  'type' => string '9' (length=1)
\L  'typeName' => string 'Afbeeldingen' (length=12)
\L  'name' => string 'images' (length=6)\L
  'title' => string 'Afbeeldingen' (length=12)
\L  'value' => string '<img src= ... /><img src= ... />' (length=xxx)
\L  'images' => \L    array (size=2)
\L      0 => \L        array (size=8)
\L          'documentId' => string '169' (length=3)
\L          'url' => string '...' (length=xxx)
\L          'urlRaw' => string '...' (length=xxx)
          'title' => string 'Foto 1' (length=21)
\L          'width' => int 300
\L          'height' => int 313
\L          'origWidth' => int 997
\L          'origHeight' => int 1039
\L          'html' => string '<img src= ... />' (length=xxx)
\L      1 => \L        array (size=8)
\L          'documentId' => string '170' (length=3)
\L          'url' => string '...' (length=xxx)
\L          'urlRaw' => string '...' (length=xxx)
          'title' => string 'Foto 2' (length=24)
\L          'width' => int 300
\L          'height' => int 313
\L          'origWidth' => int 997
\L          'origHeight' => int 1039
\L          'html' => string '<img src= ... />' (length=xxx)

Documenten

Dit veld kan worden gebruikt voor documenten. De documenten zijn te sorteren in het lijstje.

De volgende opties kunnen worden gebruikt:

  • source: waarden:
    • upload: document uploaden bij item
    • library: document kiezen uit het Documentbeheer
  • target: Document link gedrag. Waarden:
    • _top (default)
    • _blank
  • force_download: Biedt het document aan als download (standaard uit). Waarden:
    • 0 (default)
    • 1

Dit veld levert in het Twig-template het volgende object op:

array (size=6)
\L  'type' => string '8' (length=1)\L
  'typeName' => string 'Document' (length=8)
\L  'name' => string 'documents' (length=9)\L
  'title' => string 'Documenten' (length=10)
\L  'value' => string '<ul ...><li ...> etc.. </ul>’ (length=xxx)
\L  'documents' => \L    array (size=2)
\L      0 => \L        array (size=7)\L
          'documentId' => string '167' (length=3)
\L          'url' => string '...' (length=xxx)
\L          'title' => string 'Foto 1' (length=21)
\L          'mimeType' => string 'image/png' (length=9)\L
          'extension' => string 'png' (length=3)
\L          'fileSize' => int 150996\L
          'fileName' => string 'foto1.png' (length=25)
\L      1 => \L        array (size=7)
\L          'documentId' => string '168' (length=3)
\L          'url' => string '...' (length=97)
\L          'title' => string 'Foto 2' (length=24)
\L          'mimeType' => string 'image/jpeg' (length=10)
\L          'extension' => string 'jpg' (length=3)\L
          'fileSize' => int 155591
\L          'fileName' => string 'foto2.jpg' (length=28)

Video

Dit veld kan worden gebruikt voor een video van YouTube en Vimeo.

Dit veld levert in het Twig-template het volgende object op:

\Larray (size=7)
\L      'type' => string '10' (length=2)
\L      'typeName' => string 'Video' (length=5)
\L      'name' => string 'field_video' (length=11)
\L      'title' => string 'Titel van de video' (length=xx)
\L      'value' => string '<iframe src=  ... </iframe>' (length=xxx)\L
      'width' => string '640' (length=3)
\L      'height' => string '360' (length=3)

Google Maps

Dit veld kan worden gebruikt voor een coordinaat, te kiezen op een Google Maps kaart.

Dit veld levert in het Twig-template het volgende object op:

array (size=6)
      'type' => string '11' (length=2)
      'typeName' => string 'Google maps' (length=11)
      'name' => string 'map' (length=3)
      'title' => string 'Kaart' (length=5)
      'lat' => float 51.536085601785
      'lng' => float 3.6968994140625

Datum

Dit veld kan worden gebruikt voor een datum. De formattering van de datum kan worden aangepast in het opties veld:

format: Op basis van strftime(), bijvoorbeeld '%A %e %B %y' voor

'Friday 8 March 13'. Zie: http://nl3.php.net/strftime

Tip: voor filter kan gebruik gemaakt worden van de extra keys die aanwezig zijn. Met 'year  kunnen bijvoorbeeld alle items uit een bepaald jaar gekozen worden.

array (size=9)
	'type' => string '12' (length=2)
	'typeName' => string 'Date' (length=4)
	'name' => string 'datum' (length=5)
	'title' => string 'Veld: datum' (length=11)
	'timestamp' => int 1362697200
	'value' => string 'Friday 8 March 13' (length=17)
	'year' => string '2013' (length=4)
	'month' => string '03' (length=2)
	'day' => string '08' (length=2)
	'ymd' => string '2013-03-08' (length=10)
	'ym' => string '2013-03' (length=7)

Catalogus-item

Dit veld kan worden gebruikt om een ander catalogus-item te koppelen. Dit kan (ook) een item zijn uit een andere catalogus.

De volgende opties kunnen worden gebruikt:

  • catalog: Het ID van de catalogus waaruit items kunnen worden geselecteerd. Optioneel.

De output ziet er als volgt uit:

array (size=7)
	'type' => string '16' (length=2)
	'typeName' => string 'Catalog item' (length=12)
	'name' => string 'item' (length=4)
	'title' => string 'Veld: catalog-item' (length=18)
	'itemId' => string '616' (length=3)
	'value' => string 'Nieuwste' (length=8)
	'data' => [ .... ]

In het element 'data' zit de volledige data-output van het gelinkte item, zoals je dat op z’n eigen detailpagina in twig tot je beschikking hebt.

Een aantal opmerkingen:

  • In het overzicht op de beheerpagina wordt de titel van het gelinkte item gebruikt als dit veld daar getoond wordt.\L
  • In de output zit in “value” de titel van het gelinkte item. Hierop kun je ook eventueel sorteren in de lijst.\L

Let op! Bij een grote catalogus en/of catalogus-database (het totaal van alle catalogi) kan het gebruik van dit veldtype zichtbaar invloed hebben op de snelheid. Je kunt dit beperken door het gelinkte item weinig eigenschappen te geven.

Relatie

Dit veld kan worden gebruikt voor relaties uit het CRM. De relatie gegevens kunnen worden getoond bij het catalogus item. Ook wordt het catalogus item gekoppeld aan de relatie en kan zichtbaar gemaakt worden op de relatiekaart.

De volgende opties kunnen worden gebruikt:

  • mode: waarden:
    • quickpicker (default)
    • picker
  • onlyUsers: waarden:
    • false (default)
    • true
  • onlyGroups: waarden:
    • false (default)
    • true
  • onlyNotGroups: waarden:
    • false (default)
    • true
  • freefields: Geef hier de ID's van de vrije velden op die je wil gebruiken, gescheiden met een comma. Bij voorbeeld de vrije velden 'ff_1276' en 'ff_1279': freefields: 1276, 1279

Dit veld levert in het Twig-template het volgende object op:

<p>array (size=9)
  'type' =&gt; int 17
  'typeName' =&gt; string 'Relatie' (length=7)
  'name' =&gt; string 'relation' (length=9)
  'title' =&gt; string 'Relatie' (length=9)
  'relationId' =&gt; int 42
  'formattedName' =&gt; string 'Jos Jelier' (length=28)
  'primaryEmailAddress' =&gt; null
  'primaryPhoneNumber' =&gt; string '' (length=0)
  'freefields' =&gt; 
    array (size=2)
      1276 =&gt; [...]
      1279 =&gt; [...]</p>
Klik om te kopiëren

Templates

De frontend van de catalogus wordt opgebouwd in Twig-templates. Meer info over Twig en uitgebreide documentatie vind je op de officiele Twig-site: https://twig.symfony.com/

Templates lijst, lijst-item en lijst-filter

In de lijst-templates kun je gebruik maken van de volgende data:

catalog

  • catalog.title: De titel van de catalogus
  • catalog.twigListItem: De naam van de Twig-template voor een item in de lijst

fields
Een array met alle velden in deze catalogus op volgorde

  • fields[n] : De naam van het veld

fieldOptions
Een array met alle veld-objecten

  • fieldOptions[fieldName]: Het veld-object met verschillende eigenschappen, waaronder:
  • fieldOptions[fieldName].title: De titel van het veld
  • fieldOptions[fieldName].type: Het type
  • fieldOptions[fieldName].options: De beschikbare opties (interessant voor maken van filters)

items

  • items[n]: Een array met alle veldeigenschappen:
  • items[n].id: ID van het item
  • items[n].title: Titel van het item
  • items[n].dateCreated: Datum aangemaakt
  • items[n].dateCreatedTS: Datum aangemaakt in unix-timestamp
  • items[n].dateModified: Datum laatst gewijzigd
  • items[n].dateModifedTS: Datum laatst gewijzigd in unix-timestamp
  • items[n].nrView: Aantal views van dit item (aantal keer detailpagina bekeken)
  • items[n].url: De url naar de detailpagina
  • items[n].fieldname: Het Twig-object zoals hierboven beschreven bij de velden.

counts

  • counts.itemsSliced: Aantal items nu in het resultaat (o.b.v. pagina’s)
  • counts.itemsSelected: Aantal items nu geselecteerd (o.b.v. zoeken en filteren)
  • counts.itemsTotal: Totaal aantal items in deze catalogus

settings
Een array met de huidige instellingen

  • settings.itemsPerPage
  • settings.page
  • settings.sortKey
  • settings.sortDir
  • settings.search
  • settings.filter

pager

  • pager: Een pager-component, handig om te gebruiken

environment

  • environment.language: De huidige taalcode (‘en’, ‘nl’, etc).

Template lijst-details

catalog

  • catalog.title: De titel van de catalogus
  • catalog.url: De URL van de catalogus (voor terug-linkjes)

item

  • item: Een array met alle veldeigenschappen, zelfde als bij de lijst.
  • item.id: ID van het item
  • item.title: Titel van het item
  • item.dateCreated: Datum aangemaakt
  • etc... (zie data van lijst)

fields
Een array met alle velden in deze catalogus op volgorde (zie data van lijst)

fieldData
Een array met alle veld-objecten (zie data van lijst)

environment

  • environment.language: De huidige taalcode (‘en’, ‘nl’, etc).

Filteren, zoeken, sorteren en beperken met GET-parameters

De parameters hieronder kun je meegeven in de URL. De uitgangswaarden kun je ook instellen bij het catalogus. Met name het aantal items per pagina is een goede om daar te wijzigen.

Overzicht alle parameters

  • itemsPerPage
  • page
  • sortKey
  • sortDir
  • search
  • f-veldnaam(-type)

Paginering

  • itemsPerPage: Aantal items per pagina. Standaard: 20
  • page: De huidige pagina. Standaard: 1

Sorteren

  • sortKey: Het veld waarop gesorteerd wordt.
  • sortDir: De sorteerrichting:
    • a: oplopend
    • d: aflopend

De sortKey is de naam van het veld zoals die voorkomt in de data. Een 'subwaarde geef je aan met een punt. Voorbeelden:

  • Sorteren op titel: sortKey = title
  • Sorteren op de “ruwe” waarde van een getal: sortKey = veldnaam.raw
  • Sorteren op een tekstveld: sortKey = veldnaam.value

Zoeken

  • search: De query, zoekt in alle veldwaarden.

Als de query uit meerdere woorden bestaat, dan moeten alle woorden voorkomen in de veldwaarden.

Filteren

Het filter kan uit meerdere filterregels bestaan. Een filterregel is als volgt opgebouwd:

f - [veld] (- type)
  • f: geeft aan dat het een filter is
  • [veld]: is de naam van het veld, subwaardes aangegeven met een .
  • type: geeft het soort filter aan (optioneel, standaard is 'eq)

Typen filters

veld eq filter = veld is gelijk aan filter
veld from filter = veld is groter dan of gelijk aan filter
veld to filter = veld is kleiner dan filter
veld in filter = veld is een van de waarden van filter
veld any filter = veld bevat een van de waarden van filter
veld all filter = veld bevat alle waarden van filter

De typen any en all zijn met name bedoeld voor checkbox-groepen, waarbij onderscheid gemaakt moet worden tussen 'all deze waarden' of enkele van deze waarden'.

Voorbeelden:

  • f-title=Test Het veld titel moet de waarde 'Test' hebben
  • f-getal.raw-from=10 Het veld getal moet minimaal de waarde 10 hebben
  • f-car.key-in=1,2,3 Het keuzeveld car moet de waarde 1, 2 of 3 hebben
  • f-fruit.keys-any=kiwi,lime Het checkboxveld fruit moet of 'kiwi' of 'lime' bevatten
  • f-fruit.keys-all=kiwi,lime Het checkboxveld fruit moet zowel 'kiwi' als 'lime' bevatten

Array-notatie

In plaats van de komma-notatie mag ook de array-notatie worden gebruikt:

  • ?f-car-in=1,2,3 OF ?f-car-in[]=1&f-car-in[]=2&f-car-in[]=3
  • ?f-fruit-all=kiwi,lime OF ?f-fruit-all[]=kiwi&f-fruit-all[]=lime

Default filters

Voor elk veldtype is een default filter gedefinieerd, waardoor ook een simpele notatie werkt:

  • Getal: raw
  • Tekst (textfield): value
  • Tekst (textarea) : value
  • Tekst (html): value
  • Keuze (selectbox): key
  • Keuze (radiobuttons): key
  • Keuze (checkbox): keys
  • Afbeeldingen: title
  • Documenten: title
  • Video: title
  • Google Maps: value
  • Date: ymd

Dat betekent dat de volgende kolommen hetzelfde resultaat hebben:

  • f-getal.raw-from=10 en f-getal-from=10
  • f-car.key-in=1,2,3 en f-car-in=1,2,3
  • f-fruit.keys-any=kiwi,lime en f-fruit-any=kiwi,lime

Voorbeeld filter in catalogusinstellingen

f-car-in:1,2,3
f-fruit-any:kiwi,lime
Klik om te kopiëren

Voorbeeld filter in URL

Een volledige URL kan zijn:

?page=2&sortKey=title&sortDir=d&f-getal.raw-from=10&f-getal.raw-to=20

Uitleg:

  • pagina 2
  • aflopend gesorteerd op titel
  • getal is tussen 10 en 20

Nieuwe URL bouwen

In Twig is de volgende functie beschikbaar:

getCurrentURIWithGET( array $newGetParameters = null )

Voorbeeld met URL: http://domain?page=1

Code:

{{ getCurrentURIWithGET( {'sortDir':'a'} ) }}

Output: http://domain?page=1&sortDir=a

Vraag & antwoord

Hoe kan ik items indelen in categorieën?

Dat kan als volgt:

  1. Maak een veld 'categorie aan.
    
  2. Toon de opties van dit veld (in de vorm van een lijstje of tabjes) in één van de Twig-templates.
    
  3. Gebruik GET-parameters om op categorie te filteren.
    
  4. Optioneel: Configureer bij de catalogus een categorie als standaard-filter-optie.

Hoe kan ik objecten van verschillende typen (met andere velden) maken?

Er zijn drie mogelijkheden:

  1. Door alle items alle velden van de objecttypen te geven. In het Twig-template kun je een veld weglaten als die leeg is.
    
  2. Door alle items alle velden van de objecttypen te geven, en een veld waarin het objecttype staat. In het Twig-template kun je de weergave bepalen aan de hand van het gekozen objecttype.
    
  3. Door een catalogus aan te maken per objecttype. Elke catalogus kan vervolgens als losse pagina op de site worden gezet.

Kan ik catalogus-items vertalen?

Volledige meertaligheid wordt niet ondersteund, omdat dit grote complexiteit met zich mee brengt in beheer, datastructuren en user interface.

Wel zijn er meertalige velden voor textfield, textarea en html-editor, zie dit hoofdstuk.

Voor de overige velden zul je per taal een veld moeten maken. Met behulp van de huidige taal kun je het juiste veld selecteren.

'environment' => 
    array (size=1)
      'language' => string 'en' (length=2)

Hoeveel catalogus-items kunnen worden ingevoerd?

Er is geen harde limiet. Het hangt af van het aantal velden en de complexiteit van de velden tot welk aantal het nog snel genoeg is. In een gemiddelde catalogus zal dit ergens rond de 500-1000 items liggen.

In de toekomst zou de catalogus kunnen worden geoptimaliseerd voor hogere aantallen. Voor grote of complexe catalogi (5000+ items) zal altijd een zwaardere oplossing nodig zijn, zoals webshop of maatwerk.

Catalogus instellingen overschrijven in artikel

Bij het publiceren van een catalogus op een website kan je er voor kiezen om de instellingen van die catalogus te overschrijven en ze alleen door middel van het te plaatsen artikel op een andere manier te tonen. Op deze manier kan je ergens op je website je catalogus anders weergeven door bv de standaard filtering te veranderen of meer / minder items op een pagina te tonen. Je stelt dit in in het artikel 'publiceer een catalogus'.

Vorige Artikel Content uit Procurios op externe website plaatsen
Volgende Artikel Meta description en pagina titels instellen
Hulp nodig van Support of een Consultant? Neem contact op