Лектор: нет администратора для полей потока
Я не могу понять, как заставить поле потока работать в админке,
Я хотел бы, чтобы пример показывался на показанном 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 ответа
Требуется немного тщательного прочтения документации, чтобы выяснить, что нужно сделать, чтобы заставить работать блоки потока.
- Вам нужно создать папку
flowblocks
на том же уровне, где вашcontent
а такжеmodels
папки есть. - Поместите файлы модели потокового блока в эту папку (пример:
image-paragraph.ini
) - Создать
blocks
папка внутри вашегоtemplates
папка. - Поместите ваши 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
под модель.
Теперь вы можете добавить в тело блок, который мы определили ранее.