Лектор: нет администратора для полей потока

Я не могу понять, как заставить поле потока работать в админке,

Я хотел бы, чтобы пример показывался на показанном https://raw.githubusercontent.com/lektor/lektor-assets/master/screenshots/admin.png Когда я затем нажимаю на localhost:5000/admin/root/edit и получаю http://i.imgur.com/EPCrBRC.png

Я чувствую, что делаю что-то простое неправильно. Но я сократил его до базового, вот что я пытался:

$ cd /tmp/
$ lektor quickstart
Lektor Quickstart
=================

This wizard will generate a new basic project with some sensible defaults for
getting started quickly.  We jsut need to go through a few questions so that
the project is set up correctly for you.

Step 1:
| A project needs a name.  The name is primarily used for the admin UI and
| some other places to refer to your project to not get confused if multiple
| projects exist.  You can change this at any later point.
> Project Name: flow-example

Step 2:
| This is the path where the project will be located.  You can move a
| project around later if you do not like the path.  If you provide a
| relative path it will be relative to the working directory.
> Project Path [/tmp/flow-example]: 

Step 3:
| Do you want to generate a basic blog module?  If you enable this the
| models for a very basic blog will be generated.
> Add Basic Blog [Y/n]: n

Step 4:
| Your name.  This is used in a few places in the default template to refer
| to in the default copyright messages.
> Author Name [Brendan M. Sleight,,,]:   

That's all. Create project? [Y/n] Y
$ cd flow-example/
$ echo "[fields.extra]
> label = Extra
> type = flow
> flow_blocks = text" >>./models/page.ini
$ cat ./models/page.ini 
[model]
name = Page
label = {{ this.title }}

[fields.title]
label = Title
type = string

[fields.body]
label = Body
type = markdown
[fields.extra]
label = Extra
type = flow
flow_blocks = text
$ lektor server
 * Project path: /tmp/flow-example/flow-example.lektorproject
 * Output path: /home/bms/.cache/lektor/builds/76682e6a8f99116f0da91bcf96203e94
Started source info update
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Finished source info update in 0.05 sec
Started build
U index.html
U about/index.html
U projects/index.html
Finished build in 0.12 sec
Started prune
Finished prune in 0.00 sec
```

4 ответа

Требуется немного тщательного прочтения документации, чтобы выяснить, что нужно сделать, чтобы заставить работать блоки потока.

  1. Вам нужно создать папку flowblocks на том же уровне, где ваш content а также models папки есть.
  2. Поместите файлы модели потокового блока в эту папку (пример: image-paragraph.ini)
  3. Создать blocks папка внутри вашего templates папка.
  4. Поместите ваши HTML-шаблоны для вашего потокового блока в blocks папка (пример: image-paragraph.html)

Структура каталогов должна выглядеть так:

my-lektor-project
  assets
  content
  flowblocks
    image-paragraph.ini (your model)
  models
  templates
    blocks
      image-paragraph.html (your template for the block)

В настоящее время администратор очень плохо реагирует на неправильную конфигурацию. Обычно он просто умирает с ошибкой, которую вы видите в окне консоли. Скорее всего, сам блок потока не существует или содержит ошибку. Просто откройте окно консоли и посмотрите на напечатанное сообщение об ошибке. Это может дать указание.

См. https://www.getlektor.com/docs/models/flow/

Чтобы использовать Flow, вам нужно определить модели блоков потока. Если вы еще не знакомы с Flow, вам следует сначала прочитать документацию к Flow.

Определение моделей

Модели потоковых блоков работают практически так же, как и обычные модели. Различия в основном незначительны и носят косметический характер. Они хранятся в папке flowblocks / и являются ini-файлами, как и модели.

Лучше всего объяснить на примере.

Сначала создайте модель, содержащую поле с typeустановлен в flowи положить его в models/flow_page.ini.

      [model]
name = FlowPage
label = {{ this.title }}

[fields.title]
label = Title
type = string

[fields.body]
label = Body
type = flow

Создайте новый шаблон в templates/flow_page.html. Вы можете просто скопировать page.htmlЕсли хочешь.

Затем напишите следующую конфигурацию блока потока в flowblocks/colored_text.ini:

      [block]
name = Text Block
button_label = Text

[fields.text]
label = Text
type = markdown

[fields.color]
label = Class
type = select
choices = red, blue, green
choice_labels = Red, Blue, Green
default = red

Теперь вам нужен шаблон для блока потока. Добавьте это в templates/blocks/colored_text.html.

      <span style="color: {{ this.color }}">{{ this.text }}</span>

Наконец, создайте новую подстраницу, выберите FlowPageпод модель.

Теперь вы можете добавить в тело блок, который мы определили ранее.

Другие вопросы по тегам