# Plugin – lektor-expression-type 0.1

Add jinja-evaluated types to Lektor

#### Project links

#### GitHub Statistics

#### Meta

Version: 0.1

Author: Jeff Dairiki

#### Tags

field type, Jinja, and setup-env

View all tags.

## Project Description

# Lektor Expression Type Plugin

Add jinja-evaluated types, `expression` and `format_expression`, to Lektor.

These allow one to define data model fields whose values are Jinja2 expressions.

## The Types

Both the `expression` and `format_expression` types are evaluated by the jinja template engine.

`expression`

The `expression` type is evaluated as a Jinja2 expression.

An example value for this type might be:

    this.children.order_by('-pub_date').limit(4)

This would evaluate to a Lektor Query instance.

`format_expression`

The `format_expression` type is evaluated as a Jinja2 template. It will always evaluate to a string.

An example value for this type might be:

    The blog contains {{ site.get('/blog').count() }} pages.

## Installation

Add lektor-expression-type to your project from command line:

    lektor plugins add lektor-expression-type

See the Lektor plugin documentation for more information.

## Motivating Example

Suppose you want to create an Index data model, for pages which will be used display lists of other pages on your site. You could create a model definition like this (called, perhaps, `models/index.ini`):

    [model]
    name = Index Page
    label = Index: {{ this.title}}

    [fields.title]
    label = Title
    type = string

    [fields.items]
    label = Items
    type = expression
    description = Pages to list on this page

In a particular index page which uses this model, you might set the `items` field to `site.get('/projects').filter(F.tag == 'interesting')`, then in the page template (e.g. in `templates/index.html`) one could reference the `items` field (e.g. `{% for page in this.items %}`) to determine which pages to display on the page.

## Author

Jeff Dairiki dairiki@dairiki.org

## Changelog

### 0.1 — 2021-02-05

No code changes.

Update development status classifier to "stable".

#### Fixes

- Include the correct LICENSE file.

### 0.1b1 — 2020-05-05

Initial release.

## Comments