在 lektor 页面中嵌入媒体内容?
Embed media content in lektor pages?
我目前正在使用 Nikola 作为页面生成器。
但根据页面范围和用户的不同,Lektor 对于最终用户来说似乎更容易、更精简。这很适合我计划的新页面。
Nikola 还嵌入了媒体(youtube、vimeo、soundcloud 等)
https://getnikola.com/handbook.html#restructuredtext-extensions
Lektor 是如何提供这样的功能的?
Lektor 尚未提供。通常使用 Lektor,您可以使用 Markdown 编写内容。您只需将 HTML 嵌入代码(来自 YouTube 或任何服务)直接粘贴到您的 Markdown 中即可。但是有一个刚刚发布的名为 lektor-embed-x 的插件可以满足您的需求。
是对的。由于 Lektor
的核心保持简单,与 Flask
非常相似,"core" 没有自动嵌入。
然而,本着 Flask
的相同精神,Lektor
是高度可扩展的。这也适用于它在 post 中解析 MarkDown
格式的文本并呈现最终的 HTML.
正如他所说,您可以直接将 HTML 中的可嵌入代码粘贴到其他 MarkDown 文本中。并且,它会被包含在最后的 as-is 中 HTML.
但是,我个人认为这损害了 MarkDown 的简单性和快速可读性的核心意图。
easy-to-read, easy-to-write plain text format
这就是为什么我觉得 lektor-embed-x where the writer will just write down the content's link in a seperate paragraph. This small piece of plugin will do the rest to the possible extent. It is basically a glue-library between embedX 和 Lektor
的必要性。
- 如果内容是相对"popular"的站点,并且link格式可以,相关必要的embed-code将生成并包含在最终HTML中.
- 如果不是,link 将导致常规 link,即
<a href=...
link.
用法很简单
步骤 1 通过以下方式添加插件:
$ cd path/to/lektor/project_folder
$ lektor plugins add lektor-embed-x
Package lektor-embed-x (0.1.2) was added to the project
就是这样。你准备好了。 [截至目前,没有添加配置。]
现在,在 post 中,您可以将 link 添加到其自身段落的一个段落中,无需任何特殊标记或 start-flag,在您的 MarkDown
格式中post如下。
contents.lr
title: About this Website
---
body:
This is a website that was made with the Lektor quickstart.
And it does not contain a lot of information.
# **HEADING 1**
## 2nd head
_italic slated text_
~~mess~~
whatever text i need to write.
https://twitter.com/codinghorror/status/686254714938200064
Below is how I can embed in a post.
http://www.youtube.com/watch?v=_lOT2p_FCvA
So, that was what i wanted to say.
通过 Lektor
生成最终的 HTMLs 后,上面的 post 将生成如下内容:
注意
请注意,这是一个非常新的 one-man 项目,正在积极开发中,刚刚结束 pre-alpha 阶段。因此,提供者或 link 格式不多。然而。但是,我希望它能在短时间内成熟。
如果您可以使用流,您当然也可以为您的媒体定义流块。这也允许通过管理员中显示的选项进行更多控制。例如,一个非常简单(无特色)的 youtube 流块可能如下所示:
flowblocks/youtube.ini:
[block]
name = Youtube
button_label = Youtube Video
[fields.ytid]
label = Video ID
type = string
width = 1/2
templates/blocks/youtube.html:
<iframe width="560" height="315" src="https://www.youtube.com/embed/{{this.ytid}}" frameborder="0" allowfullscreen></iframe>
这定义了一个名为 "Youtube Video" 的新块类型,内部名称为 "youtube"。用户必须输入 youtube 视频 ID(视频 url 中 ?v= 之后的 letters/digits),然后通过 this.ytid 引用在模板中使用。
使用此技术还可以添加更多选项。下面是一个几乎完整的示例。
flowblocks/youtube.ini:
[block]
name = Youtube
button_label = Youtube Video
[fields.ytid]
label = Video ID
type = string
width = 1/2
[fields.size]
label = Video size
type = select
choices = 560x315, 640x360, 853x480, 1280x720
choice_labels = 560 x 315, 640 x 360, 853 x 480, 1280 x 720
default = 560x315
width = 1/2
[fields.rel]
label = Show suggested videos when the video finishes
type = boolean
default = true
width = 1/4
[fields.controls]
label = Show player controls
type = boolean
default = true
width = 1/4
[fields.showinfo]
label = Show video title and player actions
type = boolean
default = true
width = 1/4
[fields.nocookie]
label = Enable privacy-enhanced mode
type = boolean
width = 1/4
templates/blocks/youtube.html:
<iframe width="{{ this.size.split("x")[0] }}" height="{{ this.size.split("x")[1] }}" src="https://www.youtube{{ "-nocookie" if this.nocookie }}.com/embed/{{this.ytid}}?{{ "rel=0&" if not this.rel}}{{ "controls=0&" if not this.controls }}{{ "showinfo=0" if not this.showinfo }}" frameborder="0" allowfullscreen></iframe>
在管理员中编辑时看起来像这样:
也许可以使用一些智能正则表达式来允许用户粘贴完整的 youtube urls,这样他们就不需要手动提取视频 ID。但是我还没试过。
我目前正在使用 Nikola 作为页面生成器。
但根据页面范围和用户的不同,Lektor 对于最终用户来说似乎更容易、更精简。这很适合我计划的新页面。
Nikola 还嵌入了媒体(youtube、vimeo、soundcloud 等) https://getnikola.com/handbook.html#restructuredtext-extensions
Lektor 是如何提供这样的功能的?
Lektor 尚未提供。通常使用 Lektor,您可以使用 Markdown 编写内容。您只需将 HTML 嵌入代码(来自 YouTube 或任何服务)直接粘贴到您的 Markdown 中即可。但是有一个刚刚发布的名为 lektor-embed-x 的插件可以满足您的需求。
Lektor
的核心保持简单,与 Flask
非常相似,"core" 没有自动嵌入。
然而,本着 Flask
的相同精神,Lektor
是高度可扩展的。这也适用于它在 post 中解析 MarkDown
格式的文本并呈现最终的 HTML.
正如他所说,您可以直接将 HTML 中的可嵌入代码粘贴到其他 MarkDown 文本中。并且,它会被包含在最后的 as-is 中 HTML.
但是,我个人认为这损害了 MarkDown 的简单性和快速可读性的核心意图。
easy-to-read, easy-to-write plain text format
这就是为什么我觉得 lektor-embed-x where the writer will just write down the content's link in a seperate paragraph. This small piece of plugin will do the rest to the possible extent. It is basically a glue-library between embedX 和 Lektor
的必要性。
- 如果内容是相对"popular"的站点,并且link格式可以,相关必要的embed-code将生成并包含在最终HTML中.
- 如果不是,link 将导致常规 link,即
<a href=...
link.
用法很简单
步骤 1 通过以下方式添加插件:
$ cd path/to/lektor/project_folder
$ lektor plugins add lektor-embed-x
Package lektor-embed-x (0.1.2) was added to the project
就是这样。你准备好了。 [截至目前,没有添加配置。]
现在,在 post 中,您可以将 link 添加到其自身段落的一个段落中,无需任何特殊标记或 start-flag,在您的 MarkDown
格式中post如下。
contents.lr
title: About this Website
---
body:
This is a website that was made with the Lektor quickstart.
And it does not contain a lot of information.
# **HEADING 1**
## 2nd head
_italic slated text_
~~mess~~
whatever text i need to write.
https://twitter.com/codinghorror/status/686254714938200064
Below is how I can embed in a post.
http://www.youtube.com/watch?v=_lOT2p_FCvA
So, that was what i wanted to say.
通过 Lektor
生成最终的 HTMLs 后,上面的 post 将生成如下内容:
注意
请注意,这是一个非常新的 one-man 项目,正在积极开发中,刚刚结束 pre-alpha 阶段。因此,提供者或 link 格式不多。然而。但是,我希望它能在短时间内成熟。
如果您可以使用流,您当然也可以为您的媒体定义流块。这也允许通过管理员中显示的选项进行更多控制。例如,一个非常简单(无特色)的 youtube 流块可能如下所示:
flowblocks/youtube.ini:
[block]
name = Youtube
button_label = Youtube Video
[fields.ytid]
label = Video ID
type = string
width = 1/2
templates/blocks/youtube.html:
<iframe width="560" height="315" src="https://www.youtube.com/embed/{{this.ytid}}" frameborder="0" allowfullscreen></iframe>
这定义了一个名为 "Youtube Video" 的新块类型,内部名称为 "youtube"。用户必须输入 youtube 视频 ID(视频 url 中 ?v= 之后的 letters/digits),然后通过 this.ytid 引用在模板中使用。
使用此技术还可以添加更多选项。下面是一个几乎完整的示例。
flowblocks/youtube.ini:
[block]
name = Youtube
button_label = Youtube Video
[fields.ytid]
label = Video ID
type = string
width = 1/2
[fields.size]
label = Video size
type = select
choices = 560x315, 640x360, 853x480, 1280x720
choice_labels = 560 x 315, 640 x 360, 853 x 480, 1280 x 720
default = 560x315
width = 1/2
[fields.rel]
label = Show suggested videos when the video finishes
type = boolean
default = true
width = 1/4
[fields.controls]
label = Show player controls
type = boolean
default = true
width = 1/4
[fields.showinfo]
label = Show video title and player actions
type = boolean
default = true
width = 1/4
[fields.nocookie]
label = Enable privacy-enhanced mode
type = boolean
width = 1/4
templates/blocks/youtube.html:
<iframe width="{{ this.size.split("x")[0] }}" height="{{ this.size.split("x")[1] }}" src="https://www.youtube{{ "-nocookie" if this.nocookie }}.com/embed/{{this.ytid}}?{{ "rel=0&" if not this.rel}}{{ "controls=0&" if not this.controls }}{{ "showinfo=0" if not this.showinfo }}" frameborder="0" allowfullscreen></iframe>
在管理员中编辑时看起来像这样:
也许可以使用一些智能正则表达式来允许用户粘贴完整的 youtube urls,这样他们就不需要手动提取视频 ID。但是我还没试过。