Aller au contenu

Advanced Datasource Options

Ekit allows advanced configuration of datasources directly in the YAML frontmatter. This enables dynamic sorting, filtering, and pagination without writing backend code.


Example

---
layout: default

datasources:
  acteurs:
    from: "acteurs"
    sort:
      field: "{{ternary (eq query.type 'acteurs') 'nom' 'titre'}}"
      dir: "{{ternary (eq query.s 'desc') 'desc' 'asc'}}"
    filter:
      field: "{{ternary (eq query.type 'acteurs') 'nom' 'titre'}}"
      op: "contains"
      value: "{{query.q}}"
    cursor: "{{query.cursor.oid}}"
    limit: 9
---

sort

Defines how results are ordered.

sort:
  field: "nom"
  dir: "asc"

Parameters

  • field: field used for sorting
  • dir: asc or desc

Dynamic example

sort:
  field: "{{ternary (eq query.type 'acteurs') 'nom' 'titre'}}"
  dir: "{{ternary (eq query.s 'desc') 'desc' 'asc'}}"

filter

Filters results before rendering.

filter:
  field: "nom"
  op: "contains"
  value: "{{query.q}}"

Parameters

  • field: field to filter
  • op: operator
  • value: value to compare

Example

filter:
  field: "{{ternary (eq query.type 'acteurs') 'nom' 'titre'}}"
  op: "contains"
  value: "{{query.q}}"

Common operators

  • contains
  • eq
  • ne
  • gt
  • gte
  • lt
  • lte
  • in

cursor

Enables cursor-based pagination.

cursor: "{{query.cursor.oid}}"

Used for: - infinite scroll - "load more" UX - large datasets


limit

Limits number of returned records.

limit: 9

Often used with cursor.


Request-driven behavior

All datasource options support dynamic expressions.

Example:

?type=acteurs&q=marie&s=desc

Will: - filter records where nom contains "marie" - sort descending - adapt field dynamically


Why use advanced datasources

  • No backend code needed
  • Fully dynamic pages
  • Works with query parameters
  • Supports large datasets efficiently

  • Template syntax
  • Query parameters
  • Datasources basics