Synchronized build
This commit is contained in:
parent
d2bf6c75f8
commit
57615a380d
|
@ -197,8 +197,8 @@ which can for instance be used with the <a href="../templates/filters/tojson/" c
|
|||
filter.</p>
|
||||
<h2 id="example-databag">Example Databag</h2><p>This is a basic example of a data bag that contains configuration values
|
||||
for google maps. It's stored in <code>databags/gmaps.ini</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1233456ABCDEFG</span><span class="w"></span>
|
||||
<span class="na">api_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.google.com/maps/embed/v1/</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1233456ABCDEFG</span>
|
||||
<span class="na">api_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.google.com/maps/embed/v1/</span>
|
||||
</pre></div>
|
||||
<p>This can then be usde to good effect in templates:</p>
|
||||
<div class="hll"><pre><span></span><span class="cp">{%</span> <span class="k">macro</span> <span class="nv">render_map</span><span class="o">(</span><span class="nv">location</span><span class="o">,</span> <span class="nv">width</span><span class="o">=</span><span class="m">600</span><span class="o">,</span> <span class="nv">height</span><span class="o">=</span><span class="m">450</span><span class="o">)</span> <span class="cp">%}</span>
|
||||
|
|
|
@ -237,11 +237,11 @@
|
|||
<p>Returns a <code>set</code> with all values for <code>field_name</code> of all
|
||||
<a href="../../record/" class="ref">Records</a> in this query.</p>
|
||||
<h2 id="example">Example</h2><p>If your blog posts have a field called <code>tags</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="c1"># blog-post.ini</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="c1"># blog-post.ini</span>
|
||||
|
||||
<span class="k">[field.tags]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Tags</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span><span class="w"></span>
|
||||
<span class="k">[field.tags]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Tags</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span>
|
||||
</pre></div>
|
||||
<p>You can display all your blog posts' tags with:</p>
|
||||
<div class="hll"><pre><span></span><span class="cp">{%</span> <span class="k">set</span> <span class="nv">tags</span> <span class="o">=</span> <span class="nv">site.query</span><span class="o">(</span><span class="s1">'/blog'</span><span class="o">)</span><span class="nv">.distinct</span><span class="o">(</span><span class="s1">'tags'</span><span class="o">)</span> <span class="cp">%}</span>
|
||||
|
|
|
@ -264,11 +264,11 @@ It's most useful for representing flags that can be enabled or disabled.</p>
|
|||
</table>
|
||||
<p>The <code>checkbox_label</code> attribute can be used to give a description to the
|
||||
checkbox which otherwise looks a little bit lonely in the admin panel.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.render_big]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Render big</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">boolean</span><span class="w"></span>
|
||||
<span class="na">checkbox_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">If true, then the page will be rendered larger.</span><span class="w"></span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.render_big]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Render big</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">boolean</span>
|
||||
<span class="na">checkbox_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">If true, then the page will be rendered larger.</span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"page</span><span class="cp">{%</span> <span class="k">if</span> <span class="nv">this.render_big</span> <span class="cp">%}</span><span class="s"> page-large</span><span class="cp">{%</span> <span class="k">endif</span> <span class="cp">%}</span><span class="s">"</span><span class="p">></span>
|
||||
...
|
||||
|
|
|
@ -258,11 +258,11 @@ default which means that the record's configured title will be used as
|
|||
label.</li>
|
||||
</ul>
|
||||
<p>In the contents file the values are stored as comma separated list.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.slideshow]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Slideshow</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">checkboxes</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Attached images to include in the slidehow</span><span class="w"></span>
|
||||
<span class="na">source</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">record.attachments.images</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.slideshow]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Slideshow</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">checkboxes</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Attached images to include in the slidehow</span>
|
||||
<span class="na">source</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">record.attachments.images</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="cp">{%</span> <span class="k">for</span> <span class="nv">image</span> <span class="k">in</span> <span class="nv">this.attachments.images</span> <span class="cp">%}</span>
|
||||
<span class="cp">{%</span> <span class="k">if</span> <span class="nv">image._id</span> <span class="k">in</span> <span class="nv">this.slideshow</span> <span class="cp">%}</span>
|
||||
|
|
|
@ -241,9 +241,9 @@
|
|||
than a plain old <code>string</code> some basic operations can be provided in the
|
||||
templates.</p>
|
||||
<p>The canonical format for the type in text form is <code>YYYY-MM-DD</code>.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.pub_date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.pub_date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">p</span><span class="p">></span>Published: <span class="cp">{{</span> <span class="nv">this.pub_date.strftime</span><span class="o">(</span><span class="s1">'%d/%m/%Y'</span><span class="o">)</span> <span class="cp">}}</span>
|
||||
</pre></div>
|
||||
|
|
|
@ -271,9 +271,9 @@ or
|
|||
|
||||
pub_date: 2016-01-13 07:53:22 +0900
|
||||
</code></pre>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.pub_date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">datetime</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.pub_date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">datetime</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">p</span><span class="p">></span>Published: <span class="cp">{{</span> <span class="nv">this.pub_date.strftime</span><span class="o">(</span><span class="s1">'%Y-%m-%d %H:%M:%S'</span><span class="o">)</span> <span class="cp">}}</span>
|
||||
</pre></div>
|
||||
|
|
|
@ -239,11 +239,11 @@
|
|||
|
||||
<p>The <code>float</code> type is similar to the <a href="../integer/" class="ref">integer</a> one but it
|
||||
can store floating points instead of just integer values.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.percentage]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Percentage</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">float</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Just a percentage of a progress bar.</span><span class="w"></span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">%</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.percentage]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Percentage</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">float</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Just a percentage of a progress bar.</span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">%</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"progress-bar"</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">span</span> <span class="na">class</span><span class="o">=</span><span class="s">"progress"</span> <span class="na">style</span><span class="o">=</span><span class="s">"width: </span><span class="cp">{{</span> <span class="nv">this.percentage</span> <span class="cp">}}</span><span class="s">%"</span><span class="p">></</span><span class="nt">span</span><span class="p">></span>
|
||||
|
|
|
@ -267,10 +267,10 @@ field-2: value 2
|
|||
within it, but the blocks can be individually accessed through the
|
||||
<code>blocks</code> attribute. Each block's attributes are the individual fields which
|
||||
you are free to access if so desired.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">flow</span><span class="w"></span>
|
||||
<span class="na">flow_blocks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">text, image</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">flow</span>
|
||||
<span class="na">flow_blocks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">text, image</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"body"</span><span class="p">></span>
|
||||
<span class="cp">{{</span> <span class="nv">this.body</span> <span class="cp">}}</span>
|
||||
|
|
|
@ -240,10 +240,10 @@
|
|||
<p>The <code>html</code> type is basically the same as the <a href="../text/" class="ref">text</a> type but
|
||||
in templates it's rendered directly as HTML instead of being escaped.</p>
|
||||
<p>It renders as a multi-line input field in the admin interface.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.tracking_code]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Tracking Code</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">raw HTML that is inserted for ad tracking purposes.</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">html</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.tracking_code]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Tracking Code</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">raw HTML that is inserted for ad tracking purposes.</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">html</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="cp">{{</span> <span class="nv">this.tracking_code</span> <span class="cp">}}</span>
|
||||
</pre></div>
|
||||
|
|
|
@ -241,11 +241,11 @@
|
|||
arbitrary natural numbers both negative and positive. It should be used
|
||||
instead of a string when a real number with such behavior is wanted as it
|
||||
sorts numbers correctly and the numbers can be manipulated.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.image_width]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Image width</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">integer</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">The intended image width in pixels.</span><span class="w"></span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">px</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.image_width]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Image width</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">integer</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">The intended image width in pixels.</span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">px</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">img</span>
|
||||
<span class="na">src</span><span class="o">=</span><span class="s">"</span><span class="cp">{{</span> <span class="nv">this.image.thumbnail</span><span class="o">(</span><span class="nv">this.image_width</span> <span class="o">-</span> <span class="m">10</span><span class="o">)</span> <span class="cp">}}</span><span class="s">"</span>
|
||||
|
|
|
@ -265,9 +265,9 @@ there are some special attributes on it to access more information:</p>
|
|||
</tbody>
|
||||
</table>
|
||||
<p>Additional attributes can become available through the use of plugins.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"body"</span><span class="p">></span>
|
||||
<span class="cp">{{</span> <span class="nv">this.body</span> <span class="cp">}}</span>
|
||||
|
@ -297,10 +297,10 @@ include an explicit <em>scheme</em> or <em>netloc</em>.</p>
|
|||
<p>As an example, to force the old behavior, wherein links were never
|
||||
resolved via the Lektor database, configure a <code>markdown</code> field like
|
||||
so:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="na">resolve_links</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">never</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
<span class="na">resolve_links</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">never</span>
|
||||
</pre></div>
|
||||
<h2 id="linking-to-a-specific-alt">Linking to a Specific Alt</h2><p>When links are resolved through the Lektor database, URLs to specific _alt_s may be obtained by adding an <code>alt</code> query arg to the link.
|
||||
For example, to link to the current page, but in the French alt:</p>
|
||||
|
|
|
@ -241,11 +241,11 @@
|
|||
but unlike it you can only select a single item. For configuration options
|
||||
refer directly to the checkboxes type.</p>
|
||||
<p>In the contents file the values are stored as a single textual item.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.class]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Class</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span><span class="w"></span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">full-width, pull-left, pull-right</span><span class="w"></span>
|
||||
<span class="na">choice_labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Full Width, Pull Left, Pull Right</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.class]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Class</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">full-width, pull-left, pull-right</span>
|
||||
<span class="na">choice_labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Full Width, Pull Left, Pull Right</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"</span><span class="cp">{{</span> <span class="nv">this.class</span> <span class="cp">}}</span><span class="s">"</span><span class="p">></span>
|
||||
...
|
||||
|
|
|
@ -240,9 +240,9 @@ basic ones in Lektor. It can store arbitrary natural numbers both negative and
|
|||
positive. It's intended for giving pages a sort order. The reason it's a
|
||||
special type is that future versions of Lektor can take advantage of this to
|
||||
implement a widget for ordering.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.sort_key]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Sort order</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sort_key</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.sort_key]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Sort order</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sort_key</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -241,12 +241,12 @@
|
|||
arbitrary text. It's useful for many places where you want to show a bit of
|
||||
text without any special formatting (titles, basic summaries and more).</p>
|
||||
<p>It renders as a basic input field in the admin interface.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">The title of the page</span><span class="w"></span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[[header]]</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">The title of the page</span>
|
||||
<span class="na">addon_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[[header]]</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">h1</span><span class="p">></span><span class="cp">{{</span> <span class="nv">this.title</span> <span class="cp">}}</span><span class="p"></</span><span class="nt">h1</span><span class="p">></span>
|
||||
</pre></div>
|
||||
|
|
|
@ -242,10 +242,10 @@ and <a href="../text/" class="ref">text</a> type. It renders as a multi-line te
|
|||
admin but the template will see each line of text separately. It's primarily
|
||||
useful for some advanced scenarios where enumerations and other things
|
||||
should be rendered.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.things_to_buy]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Things to buy</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">A list of things that would be good to buy</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.things_to_buy]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Things to buy</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">A list of things that would be good to buy</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">h2</span><span class="p">></span>Shopping List<span class="p"></</span><span class="nt">h2</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">ul</span><span class="p">></span>
|
||||
|
|
|
@ -241,9 +241,9 @@
|
|||
can store multiple lines. It does not support any formatting but is very
|
||||
useful for storing code and other things.</p>
|
||||
<p>It renders as a multi-line input field in the admin interface.</p>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.code]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Code</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">text</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.code]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Code</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">text</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">pre</span><span class="p">></span><span class="cp">{{</span> <span class="nv">this.code</span> <span class="cp">}}</span><span class="p"></</span><span class="nt">pre</span><span class="p">></span>
|
||||
</pre></div>
|
||||
|
|
|
@ -288,9 +288,9 @@ other attributes that are useful:</p>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.website]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Website</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">url</span><span class="w"></span>
|
||||
<h2 id="field-usage">Field Usage</h2><div class="hll"><pre><span></span><span class="k">[fields.website]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Website</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">url</span>
|
||||
</pre></div>
|
||||
<h2 id="template-usage">Template Usage</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp">{{</span> <span class="nv">this.url</span> <span class="cp">}}</span><span class="s">"</span><span class="p">></span><span class="cp">{{</span> <span class="nv">this.url.host</span> <span class="cp">}}</span><span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||||
</pre></div>
|
||||
|
|
|
@ -231,7 +231,7 @@ into a new location.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">add_publisher</span><span class="p">(</span><span class="s1">'copy'</span><span class="p">,</span> <span class="n">CopyPublisher</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
<p>This publisher registers with the <code>copy</code> scheme and could be used like this:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">target_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">copy:///path/to/destination/folder</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">target_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">copy:///path/to/destination/folder</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -196,8 +196,8 @@ supported by JSON directly and the return value will be in a format that
|
|||
allows safe embedding in HTML. However if you want to use this value in an
|
||||
attribute of an element it needs to use single quotes otherwise it will
|
||||
generate a syntax error due to the embedded quotes.</p>
|
||||
<h2 id="examples">Examples</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="p">></span><span class="w"></span>
|
||||
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="cp">{{</span> <span class="o">{</span><span class="s1">'foo'</span><span class="o">:</span> <span class="s1">'bar'</span><span class="o">}|</span><span class="nf">tojson</span> <span class="cp">}}</span><span class="p">;</span><span class="w"></span>
|
||||
<h2 id="examples">Examples</h2><div class="hll"><pre><span></span><span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="p">></span>
|
||||
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="cp">{{</span> <span class="o">{</span><span class="s1">'foo'</span><span class="o">:</span> <span class="s1">'bar'</span><span class="o">}|</span><span class="nf">tojson</span> <span class="cp">}}</span><span class="p">;</span>
|
||||
<span class="p"></</span><span class="nt">script</span><span class="p">></span>
|
||||
</pre></div>
|
||||
<p>If used in attributes, single quotes are required:</p>
|
||||
|
|
|
@ -165,15 +165,15 @@ the system will refuse to build the website.</p></div><h2 id="enabling-alternati
|
|||
section has to be added. It's important that one of the alternatives is
|
||||
marked as "primary" which informs the system which of the alternatives is
|
||||
the reference.</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[alternatives.en]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">English</span><span class="w"></span>
|
||||
<span class="na">primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en_US</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[alternatives.en]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">English</span>
|
||||
<span class="na">primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en_US</span>
|
||||
|
||||
<span class="k">[alternatives.fr]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">French</span><span class="w"></span>
|
||||
<span class="na">url_prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/fr/</span><span class="w"></span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">fr</span><span class="w"></span>
|
||||
<span class="k">[alternatives.fr]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">French</span>
|
||||
<span class="na">url_prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/fr/</span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">fr</span>
|
||||
</pre></div>
|
||||
<p>The <code>locale</code> key is used to define the locale that Lektor assumes for the
|
||||
alternative. This is for instance used for date formatting.</p>
|
||||
|
|
|
@ -157,9 +157,9 @@ menu or similar things.</p>
|
|||
folder. The files there are accessible by their name sans the file extension.
|
||||
All ordering in the source files is retained. So for instance this could
|
||||
be the <code>main-nav.ini</code> data file for a basic navigation:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">/downloads</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Download</span><span class="w"></span>
|
||||
<span class="na">/docs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation</span><span class="w"></span>
|
||||
<span class="na">/blog</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">/downloads</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Download</span>
|
||||
<span class="na">/docs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation</span>
|
||||
<span class="na">/blog</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span>
|
||||
</pre></div>
|
||||
<p>And the template could access it like this:</p>
|
||||
<div class="hll"><pre><span></span><span class="p"><</span><span class="nt">ul</span> <span class="na">class</span><span class="o">=</span><span class="s">"nav"</span><span class="p">></span>
|
||||
|
@ -178,14 +178,14 @@ within the bag. For instance you could use this to look up values that might
|
|||
change depending on the alternative of a page for instance.</p>
|
||||
<p>In this case the system is used to translate buttons. Take <code>buttons.ini</code>
|
||||
as an example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[en]</span><span class="w"></span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Download</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[en]</span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Download</span>
|
||||
|
||||
<span class="k">[de]</span><span class="w"></span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Herunterladen</span><span class="w"></span>
|
||||
<span class="k">[de]</span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Herunterladen</span>
|
||||
|
||||
<span class="k">[ru]</span><span class="w"></span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Скачать</span><span class="w"></span>
|
||||
<span class="k">[ru]</span>
|
||||
<span class="na">download</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Скачать</span>
|
||||
</pre></div>
|
||||
<p>And in a template it could be used like this:</p>
|
||||
<div class="hll"><pre><span></span><span class="p"><</span><span class="nt">h2</span><span class="p">></span><span class="cp">{{</span> <span class="nv">bag</span><span class="o">(</span><span class="s1">'buttons'</span><span class="o">,</span> <span class="nv">this.alt</span><span class="o">,</span> <span class="s1">'download'</span><span class="o">)</span> <span class="cp">}}</span><span class="p"></</span><span class="nt">h2</span><span class="p">></span>
|
||||
|
|
|
@ -163,8 +163,8 @@ and not very portable.</p>
|
|||
<p>The system supports FTP (<code>ftp://</code>) and FTP over TLS (<code>ftps://</code>). Passive mode
|
||||
can be enabled/disabled with the optional <code>?passive</code> parameter. It defaults
|
||||
to true.</p>
|
||||
<h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ftps://myuser:mypassword@ftp.example.com/var/www/example</span><span class="w"></span>
|
||||
<h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ftps://myuser:mypassword@ftp.example.com/var/www/example</span>
|
||||
</pre></div>
|
||||
<h2 id="credentials">Credentials</h2><p>FTP is considered a largely insecure protocol for Lektor. As such if you
|
||||
want to use it you should keep your project file safe as credentials will
|
||||
|
|
|
@ -163,8 +163,8 @@ can also accept <code>username:password@</code> in the URL to hold the credentia
|
|||
addition to accepting username and password from the command line or
|
||||
environment variables.</p>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.ghpages]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages://your-user/your-repository</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.ghpages]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages://your-user/your-repository</span>
|
||||
</pre></div>
|
||||
<h2 id="credentials">Credentials</h2><p>This deployment method has two implementations: <code>ghpages</code> (also known as
|
||||
<code>ghpages+ssh</code>) which uses SSH and <code>ghpages+https</code> which uses HTTPS. They
|
||||
|
@ -180,8 +180,8 @@ with behavior for GitHub Pages.</p>
|
|||
<h2 id="cname-support">CNAME Support</h2><p>If you want to use a custom domain with GitHub pages (also known as a
|
||||
<a href="https://en.wikipedia.org/wiki/CNAME" class="ext">CNAME</a>), provide the intended
|
||||
CNAME in the target URL using the <code>?cname</code> parameter:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages://your-user/your-repository?cname=www.example.com</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages://your-user/your-repository?cname=www.example.com</span>
|
||||
</pre></div>
|
||||
<p>Note that this will overwrite whatever custom domain you may have set on
|
||||
GitHub with every deployment.</p>
|
||||
|
|
|
@ -168,17 +168,17 @@ repository for it needs to be named <code><username>.gitlab.io</code>.</p>
|
|||
<code>.gitlab-ci.yml</code> which contains a configuration for gitlab pages.</p>
|
||||
<h2 id="configuration">Configuration</h2><p>To enable support for Lektor you need to create a <code>.gitlab-ci.yml</code> config
|
||||
next to your <code>.lektorproject</code> file with the following contents:</p>
|
||||
<div class="hll"><pre><span></span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python:latest</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python:latest</span>
|
||||
|
||||
<span class="nt">pages</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install lektor</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lektor build --output-path public</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">artifacts</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">public</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">only</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span><span class="w"></span>
|
||||
<span class="nt">pages</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install lektor</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lektor build --output-path public</span>
|
||||
<span class="w"> </span><span class="nt">artifacts</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">public</span>
|
||||
<span class="w"> </span><span class="nt">only</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span>
|
||||
</pre></div>
|
||||
<p>It's important that the output path is set to <code>public</code> as this is what
|
||||
will be served up. In case you want to use a different branch than <code>master</code>
|
||||
|
@ -192,26 +192,26 @@ To do so, you have to:</p>
|
|||
<li>configure Gitlab to cache this directory.</li>
|
||||
</ul>
|
||||
<p>See the example below.</p>
|
||||
<div class="hll"><pre><span></span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python:latest</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python:latest</span>
|
||||
|
||||
<span class="nt">default</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">cache</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">.cache/lektor</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">.cache/pip</span><span class="w"></span>
|
||||
<span class="nt">default</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">cache</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">.cache/lektor</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">.cache/pip</span>
|
||||
|
||||
<span class="nt">variables</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">XDG_CACHE_HOME</span><span class="p">:</span><span class="w"> </span><span class="s">"$CI_PROJECT_DIR/.cache"</span><span class="w"></span>
|
||||
<span class="nt">variables</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">XDG_CACHE_HOME</span><span class="p">:</span><span class="w"> </span><span class="s">"$CI_PROJECT_DIR/.cache"</span>
|
||||
|
||||
<span class="nt">pages</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install lektor</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lektor build --output-path public</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">artifacts</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">public</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">only</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span><span class="w"></span>
|
||||
<span class="nt">pages</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install lektor</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lektor build --output-path public</span>
|
||||
<span class="w"> </span><span class="nt">artifacts</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">paths</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">public</span>
|
||||
<span class="w"> </span><span class="nt">only</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span>
|
||||
</pre></div>
|
||||
<h2 id="cname-support">CNAME Support</h2><p>If you want to use a <a href="https://en.wikipedia.org/wiki/CNAME" class="ext">CNAME</a> with
|
||||
GitLab pages you can configure it in the GitLab settings:</p>
|
||||
|
|
|
@ -179,11 +179,11 @@ keys are <code>name</code> for an optional human readable name of the server, <c
|
|||
enable or disable it (defaults to <code>true</code>) and <code>target</code> which is the URL to
|
||||
publish to. Additionally one of the servers can have <code>default</code> set to <code>yes</code>
|
||||
to set it as default. Here is an example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder</span>
|
||||
</pre></div>
|
||||
<p>To trigger a deploy you can use the <a href="../cli/deploy/" class="ref">deploy</a> command:</p>
|
||||
<pre><code>$ lektor deploy production
|
||||
|
|
|
@ -154,8 +154,8 @@ way. It uses the system's SSH config so for authentication just configure
|
|||
SSH as you would normally do. The <code>username</code> part is optional and defaults
|
||||
to the current user that is signed into the machine or whatever is picked up
|
||||
as default from the <code>.ssh/config</code>.</p>
|
||||
<h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://deploy@example.com/var/www/example.com</span><span class="w"></span>
|
||||
<h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://deploy@example.com/var/www/example.com</span>
|
||||
</pre></div>
|
||||
<h2 id="credentials">Credentials</h2><p>The <code>rsync</code> deploy method supports both username and password parameter
|
||||
though it's recommended to use <code>.ssh/config</code> and an SSH agent to secure
|
||||
|
@ -175,8 +175,8 @@ assumed.</p>
|
|||
it's necessary to explicitly tell <code>rsync</code> to remove files or directories
|
||||
on target that don't exist on source anymore. This can be done using the
|
||||
<code>?delete</code> URL parameter:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder?delete</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder?delete</span>
|
||||
</pre></div>
|
||||
<p>If the parameter is provided Lektor will issue a <code>rsync --delete-delay</code>,
|
||||
which performs deletions after all other transfers ended, and only in case
|
||||
|
@ -186,8 +186,8 @@ on target that does not exist on source. This means that if you have files
|
|||
in the target tree that are not managed by lektor, they will get removed.</p></div><h2 id="exclusion-support">Exclusion Support</h2><p>You can exclude items from being synced by using one or more <code>exclude</code>
|
||||
parameters. This is also useful in combination with <code>delete</code> to prevent
|
||||
removal of files in the target tree that are not managed by lektor:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder?delete&exclude=target_item_1&exclude=target_item_2</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder?delete&exclude=target_item_1&exclude=target_item_2</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -167,13 +167,13 @@ GitHub account.</p>
|
|||
<p>This guide is also available as a <a href="https://www.youtube.com/embed/3pj_EyZIL5A">7 minute screencast</a>.</p>
|
||||
<h2 id="travis-config">Travis Config</h2><p>Once you have signed up for Travis-CI you need to add a <code>.travis.yml</code> config
|
||||
file into your repository. You can copy paste this over:</p>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span><span class="w"></span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span><span class="w"></span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span><span class="w"></span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span><span class="w"></span>
|
||||
<span class="nt">deploy</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span>
|
||||
<span class="nt">deploy</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span>
|
||||
</pre></div>
|
||||
<p>Because Travis already comes with all dependencies we need other than
|
||||
Lektor itself we just need to pip install Lektor and we're ready to go. For
|
||||
|
@ -182,8 +182,8 @@ the build step we invoke <code>lektor build</code>, and for the deploy step we i
|
|||
to configure that.</p>
|
||||
<h2 id="project-server-config">Project Server Config</h2><p>For the above example the best way to configure the server for the deployment
|
||||
in the project file would be to use <code>ghpages+https</code> like this:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.ghpages]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages+https://username/repository</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.ghpages]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ghpages+https://username/repository</span>
|
||||
</pre></div>
|
||||
<p>You need to add this to your <code>.lektorproject</code> file.</p>
|
||||
<p>Whenever Travis builds it will automatically throw the end result into the
|
||||
|
@ -227,17 +227,17 @@ the Travis CI documentation.</p>
|
|||
<h2 id="speeding-up-builds-with-caching">Speeding up Builds with Caching</h2><p>In the default setting Travis will have to rebuild everything because between
|
||||
builds it does not cache the build results. You can change this by enabling
|
||||
caching. Adjust your <code>.travis.yml</code> file to look like this:</p>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span><span class="w"></span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span><span class="w"></span>
|
||||
<span class="nt">cache</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">directories</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/pip</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/lektor/builds</span><span class="w"></span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span><span class="w"></span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span><span class="w"></span>
|
||||
<span class="nt">deploy</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span>
|
||||
<span class="nt">cache</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">directories</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/pip</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/lektor/builds</span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span>
|
||||
<span class="nt">deploy</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span>
|
||||
</pre></div>
|
||||
<p>Note that it is also possible to set the cache directory of Lektor using the
|
||||
environment variable <code>XDG_CACHE_HOME</code>, and cache this directory instead,
|
||||
|
@ -245,19 +245,19 @@ as done with <a href="../glpages/">Gitlab pages</a>.</p>
|
|||
<h2 id="restricting-branches">Restricting Branches</h2><p>If you plan on having different branches and contributors you should disable
|
||||
the deployment to the master branch only. You can do this with the following
|
||||
config:</p>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span><span class="w"></span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span><span class="w"></span>
|
||||
<span class="nt">cache</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">directories</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/pip</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/lektor/builds</span><span class="w"></span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span><span class="w"></span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span><span class="w"></span>
|
||||
<span class="nt">deploy</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">branch</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python</span>
|
||||
<span class="nt">python</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.6</span>
|
||||
<span class="nt">cache</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">directories</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/pip</span>
|
||||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">$HOME/.cache/lektor/builds</span>
|
||||
<span class="nt">install</span><span class="p">:</span><span class="w"> </span><span class="s">"pip</span><span class="nv"> </span><span class="s">install</span><span class="nv"> </span><span class="s">Lektor"</span>
|
||||
<span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">build"</span>
|
||||
<span class="nt">deploy</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">script</span>
|
||||
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="s">"lektor</span><span class="nv"> </span><span class="s">deploy</span><span class="nv"> </span><span class="s">ghpages"</span>
|
||||
<span class="w"> </span><span class="nt">on</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">branch</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">master</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -188,48 +188,48 @@ page and what the order is. We also set it to <code>hidden</code> and <code>pro
|
|||
will make it unavailable in the admin (<code>hidden</code>) for new pages and make it
|
||||
impossible to delete (<code>protected</code>). This means we need to manually create the
|
||||
one page later which will use this.</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-pub_date, title</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-pub_date, title</span>
|
||||
|
||||
<span class="k">[pagination]</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">per_page</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">10</span><span class="w"></span>
|
||||
<span class="k">[pagination]</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">per_page</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">10</span>
|
||||
</pre></div>
|
||||
<h3 id="blog-post.ini`"><code>blog-post.ini</code></h3><p>Each blog post has a title, publication date, author and body. The publication
|
||||
date and title are also used for sorting if you look into the <code>blog.ini</code>.
|
||||
Lastly we set up the label of the page to be the title of the blog post. We
|
||||
can also set it to <code>hidden</code> as the model is automatically selected in the
|
||||
admin whenever a page is created in the blog.</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog Post</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog Post</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span>
|
||||
|
||||
<span class="k">[fields.pub_date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span><span class="w"></span>
|
||||
<span class="k">[fields.pub_date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Publication date</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span>
|
||||
|
||||
<span class="k">[fields.author]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Author</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span><span class="w"></span>
|
||||
<span class="k">[fields.author]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Author</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span>
|
||||
|
||||
<span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre></div>
|
||||
<h2 id="the-templates">The Templates</h2><p>Now that we have the models set up, we want to create the templates.</p>
|
||||
<h3 id="blog.html`"><code>blog.html</code></h3><p>Let's start with the blog overview page. This template is used for our <code>blog</code>
|
||||
|
@ -284,7 +284,7 @@ with the name of your blog. For instance just <code>content/blog</code> and put
|
|||
into the URL? That's thankfully very easy. All you need to do is to set up
|
||||
a new URL format for the children. Just edit <code>blog.ini</code> and add this to
|
||||
the <code>[children]</code> section:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">slug_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">slug_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}</span>
|
||||
</pre></div>
|
||||
<p>What this does is that it will prepend the year (<code>YYYY</code>) and month (<code>M</code>) to
|
||||
the ID of the page if the publication date is configured. Otherwise it will
|
||||
|
|
|
@ -200,64 +200,64 @@ different categories and it should be possible to see which projects belong
|
|||
to which category.</p>
|
||||
<h2 id="the-models">The Models</h2><p>So we will end up with four models: <code>projects.ini</code>, <code>project.ini</code>,
|
||||
<code>project-categories.ini</code> and <code>project-category.ini</code>. Here is how they look:</p>
|
||||
<h3 id="projects.ini`"><code>projects.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="projects.ini`"><code>projects.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-date, name</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-date, name</span>
|
||||
</pre></div>
|
||||
<h3 id="project.ini`"><code>project.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="project.ini`"><code>project.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[fields.name]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.name]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Date</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span><span class="w"></span>
|
||||
<span class="k">[fields.date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Date</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span>
|
||||
|
||||
<span class="k">[fields.description]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Description</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.description]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Description</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
|
||||
<span class="k">[fields.categories]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Categories</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">checkboxes</span><span class="w"></span>
|
||||
<span class="na">source</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/project-categories')</span><span class="w"></span>
|
||||
<span class="k">[fields.categories]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Categories</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">checkboxes</span>
|
||||
<span class="na">source</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/project-categories')</span>
|
||||
</pre></div>
|
||||
<p>The above models should be mostly clear. What is probably not entirely clear
|
||||
is the <code>source</code> parameter for the categories. Essentially we instruct the
|
||||
admin panel to fill the selection for the checkboxes from the child pages
|
||||
below the <code>project-categories</code> folder. This is where we will maintain the
|
||||
categories.</p>
|
||||
<h3 id="project-categories.ini`"><code>project-categories.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Categories</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Categories</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="project-categories.ini`"><code>project-categories.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Categories</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Categories</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project-category</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">name</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project-category</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">name</span>
|
||||
</pre></div>
|
||||
<h3 id="project-category.ini`"><code>project-category.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Category</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="project-category.ini`"><code>project-category.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project Category</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">replaced_with</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/projects').filter(F.categories.contains(this))</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">replaced_with</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/projects').filter(F.categories.contains(this))</span>
|
||||
|
||||
<span class="k">[fields.name]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.name]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
</pre></div>
|
||||
<p>So this is where the magic lives. the <code>replaced_with</code> key in the <code>[children]</code>
|
||||
section tells Lektor to ignore the child pages that would normally exist below
|
||||
|
|
|
@ -178,7 +178,7 @@ for you:</p>
|
|||
website. Just create a file named <code>disqus-comments.ini</code> into your
|
||||
<code>configs/</code> folder and configure the <code>shortname</code> key with the name of
|
||||
your disqus community:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">shortname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_SHORTNAME</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">shortname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_SHORTNAME</span>
|
||||
</pre></div>
|
||||
<h2 id="in-templates">In Templates</h2><p>Now you can add a discussion box to any of your templates by just using
|
||||
the <code>render_disqus_comments</code> function. Just calling it is enough to
|
||||
|
|
|
@ -184,8 +184,8 @@ development server. To test those you will need to explicitly navigate to
|
|||
that relative URLs <em>will not work</em>. If you want to use custom error pages you
|
||||
will have to set the <code>url_style</code> to <code>absolute</code> as otherwise URLs on an error
|
||||
page will not work. Just add this to your project file:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span><span class="w"></span>
|
||||
<span class="na">url_style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">absolute</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span>
|
||||
<span class="na">url_style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">absolute</span>
|
||||
</pre></div>
|
||||
<p>For more information about this you can read the <a href="../../project/file/" class="ref">Project File Documentation</a>.</p>
|
||||
<h2 id="creating-an-error-page">Creating an Error Page</h2><p>You can easily add a 404 page by creating a <code>404.html/contents.lr</code>
|
||||
|
@ -203,16 +203,16 @@ work slightly differently.</p>
|
|||
<h3 id="apache">Apache</h3><p>Making custom error pages work is easiest with Apache. If <code>.htaccess</code> files
|
||||
are enabled you can just put a file with that name into your <code>assets</code> folder
|
||||
and add the following line to it:</p>
|
||||
<div class="hll"><pre><span></span><span class="nb">ErrorDocument</span><span class="w"> </span><span class="m">404</span><span class="w"> </span><span class="sx">/404.html</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="nb">ErrorDocument</span><span class="w"> </span><span class="m">404</span><span class="w"> </span><span class="sx">/404.html</span>
|
||||
</pre></div>
|
||||
<p>Alternatively you can add the above line into a <code>VirtualHost</code> or <code>Directory</code>
|
||||
section in your main config file.</p>
|
||||
<h3 id="nginx">nginx</h3><p>For nginx you need to enable the error document in your main config file. Just
|
||||
add it to your <code>server</code> section:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">error_page</span><span class="w"> </span><span class="mi">404</span><span class="w"> </span><span class="s">/404.html</span><span class="p">;</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">error_page</span><span class="w"> </span><span class="mi">404</span><span class="w"> </span><span class="s">/404.html</span><span class="p">;</span>
|
||||
</pre></div>
|
||||
<h3 id="lighttpd">lighttpd</h3><p>If you are using lighttpd you can configure an error page for 404 this way:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">server.error-handler-404</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"/404.html"</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">server.error-handler-404</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"/404.html"</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -169,24 +169,24 @@ children. This way an order can be defined that is used by default for any
|
|||
query involving the children of a page. So what can you order by? You can
|
||||
order by any field you want. For instance to order by the name of a page
|
||||
you can do this:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">name</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">name</span>
|
||||
</pre></div>
|
||||
<p>This will automatically order the <code>.children</code> query by the name of a project.
|
||||
You can define more than one ordering. For instance you could order blog
|
||||
posts by dates in decreasing order and secondarily by the blog title:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-pub_date, title</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-pub_date, title</span>
|
||||
</pre></div>
|
||||
<p>A minus sign as prefix reverses the order.</p>
|
||||
<h2 id="specific-order">Specific Order</h2><p>But what to do if you want to order something specifically? In that case you
|
||||
can use the <a href="../../api/db/types/sort-key/" class="ref">sort_key</a> type and configure
|
||||
that:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">doc-page</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sort_key</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">doc-page</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sort_key</span>
|
||||
</pre></div>
|
||||
<p>Currently you need to explicitly give numbers in this field but future versions
|
||||
of Lektor will provide support for automatically reordering them in the admin
|
||||
|
|
|
@ -171,9 +171,9 @@ subset of the child records per page.</p>
|
|||
<h2 id="configuring-pagination">Configuring Pagination</h2><p>First you need to enable the pagination in the model. Primarily you need
|
||||
to enable the pagination and set how many items show up on a page. Just
|
||||
add this to the parent model:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[pagination]</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">per_page</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">10</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[pagination]</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">per_page</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">10</span>
|
||||
</pre></div>
|
||||
<h2 id="selecting-the-children">Selecting the Children</h2><p>Now that you have the pagination configured you need to iterate only over
|
||||
the children of an active page in your template rather than the children of the
|
||||
|
|
|
@ -182,51 +182,51 @@ for new pages and make it impossible to delete (<code>protected</code>). This m
|
|||
need to manually create the one page later which will use this.</p>
|
||||
<p>Because we only have a single page for the projects overview we give it a
|
||||
static label manually (<code>label = Projects</code>).</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Projects</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-date, name</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">project</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">-date, name</span>
|
||||
</pre></div>
|
||||
<h3 id="project.ini`"><code>project.ini</code></h3><p>Next up is the model for the project. This is completely up to you, we will go
|
||||
with some things here that might appear on such a portfolio page. In addition
|
||||
we will do something with the attachments of this page, but more about that
|
||||
later. For now we just order them by their filename (<code>_id</code>):</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.name }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[attachments]</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_id</span><span class="w"></span>
|
||||
<span class="k">[attachments]</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_id</span>
|
||||
|
||||
<span class="k">[fields.name]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span><span class="w"></span>
|
||||
<span class="k">[fields.name]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Name</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span>
|
||||
|
||||
<span class="k">[fields.date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Date</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/4</span><span class="w"></span>
|
||||
<span class="k">[fields.date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Date</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">date</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/4</span>
|
||||
|
||||
<span class="k">[fields.type]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project type</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/4</span><span class="w"></span>
|
||||
<span class="k">[fields.type]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Project type</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/4</span>
|
||||
|
||||
<span class="k">[fields.website]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Website</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">url</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span><span class="w"></span>
|
||||
<span class="k">[fields.website]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Website</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">url</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1/2</span>
|
||||
|
||||
<span class="k">[fields.description]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Description</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.description]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Description</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre></div>
|
||||
<h2 id="templates">Templates</h2><p>So now that we have models, we should probably go over what we can do with the
|
||||
attachments. Because each page in Lektor can have attachments added we can
|
||||
|
|
|
@ -169,13 +169,13 @@
|
|||
|
||||
<p>Setting up a flexible redirect system to make HTML redirects in Lektor is easy. A better setup would likely be on the server level, for instance in nginx, or configured on your CDN. The redirect will be more performant on the server level. Though this is not the best kind of redirect, it is pretty robust and will work in most situations. This example is flexible and can handle multiple redirects for your site.</p>
|
||||
<h2 id="models-and-templates">Models and Templates</h2><p>Set up the models to have a simple field that can hold the value of the target path. This is the path the page will be redirected to.</p>
|
||||
<h3 id="models/redirect.ini`"><code>models/redirect.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Redirect</span><span class="w"></span>
|
||||
<h3 id="models/redirect.ini`"><code>models/redirect.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Redirect</span>
|
||||
|
||||
<span class="k">[fields.target]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Redirect Target</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Target is of type 'string' to allow relative paths. Converted to url in the template.</span><span class="w"></span>
|
||||
<span class="k">[fields.target]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Redirect Target</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Target is of type 'string' to allow relative paths. Converted to url in the template.</span>
|
||||
</pre></div>
|
||||
<p>The template contains the minimal amount of html needed to initiate a redirect, along with a query for the target path.</p>
|
||||
<h3 id="templates/redirect.html`"><code>templates/redirect.html</code></h3><div class="hll"><pre><span></span><span class="x"><meta http-equiv="refresh" content="0; URL='</span><span class="cp">{{</span> <span class="nv">this.target</span><span class="o">|</span><span class="nf">url</span> <span class="cp">}}</span><span class="x">'" /></span>
|
||||
|
|
|
@ -193,35 +193,35 @@ parts of our big page.</li>
|
|||
<p>We will just sort all the documentation pages by the page ID so it's possible
|
||||
to just order the pages by prefixing the page with a number
|
||||
(<code>0001-installation</code>, <code>0002-quickstart</code> etc.)</p>
|
||||
<h3 id="index.ini`"><code>index.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="index.ini`"><code>index.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
</pre></div>
|
||||
<h3 id="doc-pages.ini`"><code>doc-pages.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Pages</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Pages</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="doc-pages.ini`"><code>doc-pages.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Pages</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Pages</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">protected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[children]</span><span class="w"></span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">doc-page</span><span class="w"></span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_id</span><span class="w"></span>
|
||||
<span class="k">[children]</span>
|
||||
<span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">doc-page</span>
|
||||
<span class="na">order_by</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_id</span>
|
||||
</pre></div>
|
||||
<h3 id="doc-page.ini`"><code>doc-page.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Page</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<h3 id="doc-page.ini`"><code>doc-page.ini</code></h3><div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Documentation Page</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
<span class="na">hidden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.body]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre></div>
|
||||
<h2 id="initializing-the-contents">Initializing the Contents</h2><p>Now that we have the models we need to set up the initial pages. All our
|
||||
models are hidden which means that we cannot use the admin panel to setup
|
||||
|
|
|
@ -181,11 +181,11 @@ pages which should be excluded from navigation or automatic link generation.</p>
|
|||
iterate over all pages of the site recursively. This also automatically
|
||||
skips hidden pages so those will not be generated out.</p>
|
||||
<div class="hll"><pre><span></span><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
||||
<span class="nt"><urlset</span> <span class="na">xmlns=</span><span class="s">"http://www.sitemaps.org/schemas/sitemap/0.9"</span><span class="nt">></span>
|
||||
<span class="cp">{%</span>- <span class="k">for</span> <span class="nv">page</span> <span class="k">in</span> <span class="o">[</span><span class="nv">site.root</span><span class="o">]</span> <span class="k">if</span> <span class="nv">page</span> <span class="o">!=</span> <span class="nv">this</span> <span class="k">recursive</span> <span class="cp">%}</span>
|
||||
<span class="nt"><url><loc></span><span class="cp">{{</span> <span class="nv">page</span><span class="o">|</span><span class="nf">url</span><span class="o">(</span><span class="nv">external</span><span class="o">=</span><span class="kp">true</span><span class="o">)</span> <span class="cp">}}</span><span class="nt"></loc></url></span>
|
||||
<span class="cp">{{</span><span class="o">-</span> <span class="nb">loop</span><span class="o">(</span><span class="nv">page.children</span><span class="o">|</span><span class="nf">sort</span><span class="o">(</span><span class="nv">attribute</span><span class="o">=</span><span class="s1">'path'</span><span class="o">))</span> <span class="cp">}}</span>
|
||||
<span class="cp">{%</span>- <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
<span class="nt"><urlset</span><span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://www.sitemaps.org/schemas/sitemap/0.9"</span><span class="nt">></span>
|
||||
<span class="w"> </span><span class="cp">{%</span>- <span class="k">for</span> <span class="nv">page</span> <span class="k">in</span> <span class="o">[</span><span class="nv">site.root</span><span class="o">]</span> <span class="k">if</span> <span class="nv">page</span> <span class="o">!=</span> <span class="nv">this</span> <span class="k">recursive</span> <span class="cp">%}</span>
|
||||
<span class="w"> </span><span class="nt"><url><loc></span><span class="cp">{{</span> <span class="nv">page</span><span class="o">|</span><span class="nf">url</span><span class="o">(</span><span class="nv">external</span><span class="o">=</span><span class="kp">true</span><span class="o">)</span> <span class="cp">}}</span><span class="nt"></loc></url></span>
|
||||
<span class="w"> </span><span class="cp">{{</span><span class="o">-</span> <span class="nb">loop</span><span class="o">(</span><span class="nv">page.children</span><span class="o">|</span><span class="nf">sort</span><span class="o">(</span><span class="nv">attribute</span><span class="o">=</span><span class="s1">'path'</span><span class="o">))</span> <span class="cp">}}</span>
|
||||
<span class="w"> </span><span class="cp">{%</span>- <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
<span class="nt"></urlset></span>
|
||||
</pre></div>
|
||||
<p>Sorting the page using <code>|sort(attribute='path')</code> is not mandatory, but can be
|
||||
|
|
|
@ -200,17 +200,17 @@ values) and then generate a <code>package.json</code> file for you.</p>
|
|||
<p>It should look similar to the following example. Please <strong>do not</strong> just
|
||||
copy-paste this! Instead run the tool, so that your <code>package.json</code> meets
|
||||
the latest format specification.</p>
|
||||
<div class="hll"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"lektor-example"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.1.0"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"main"</span><span class="p">:</span><span class="w"> </span><span class="s2">"index.js"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"scripts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"test"</span><span class="p">:</span><span class="w"> </span><span class="s2">"echo \"Error: no test specified\" && exit 1"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"author"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"license"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MIT"</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"lektor-example"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.1.0"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"main"</span><span class="p">:</span><span class="w"> </span><span class="s2">"index.js"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"scripts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"test"</span><span class="p">:</span><span class="w"> </span><span class="s2">"echo \"Error: no test specified\" && exit 1"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"author"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"license"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MIT"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
<p>Now we can <code>npm install</code> all the things we want:</p>
|
||||
<pre><code>$ npm install --save-dev webpack babel-core node-sass babel-loader sass-loader css-loader url-loader style-loader file-loader extract-text-webpack-plugin
|
||||
|
@ -232,48 +232,48 @@ installed for as long as someone else ran it before.</p>
|
|||
<li>all built files will go to <code>assets/static/gen</code></li>
|
||||
<li>there will be a <code>gen/app.js</code> and a <code>gen/styles.css</code> file to include</li>
|
||||
</ul>
|
||||
<div class="hll"><pre><span></span><span class="kd">var</span><span class="w"> </span><span class="nx">webpack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'webpack'</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">var</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'path'</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">var</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'extract-text-webpack-plugin'</span><span class="p">);</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="kd">var</span><span class="w"> </span><span class="nx">webpack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'webpack'</span><span class="p">);</span>
|
||||
<span class="kd">var</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'path'</span><span class="p">);</span>
|
||||
<span class="kd">var</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">'extract-text-webpack-plugin'</span><span class="p">);</span>
|
||||
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="s1">'app'</span><span class="o">:</span><span class="w"> </span><span class="s1">'./js/main.js'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="s1">'styles'</span><span class="o">:</span><span class="w"> </span><span class="s1">'./scss/main.scss'</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">path</span><span class="o">:</span><span class="w"> </span><span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'/assets/static/gen'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s1">'[name].js'</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">devtool</span><span class="o">:</span><span class="w"> </span><span class="s1">'#cheap-module-source-map'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">resolve</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">modules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'node_modules'</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">extensions</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'.js'</span><span class="p">]</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.js$/</span><span class="p">,</span><span class="w"> </span><span class="nx">exclude</span><span class="o">:</span><span class="w"> </span><span class="sr">/node_modules/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="s1">'babel-loader'</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">.</span><span class="nx">extract</span><span class="p">({</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">fallback</span><span class="o">:</span><span class="w"> </span><span class="s1">'style-loader'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="s1">'css-loader!sass-loader'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.css$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">.</span><span class="nx">extract</span><span class="p">({</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">fallback</span><span class="o">:</span><span class="w"> </span><span class="s1">'style-loader'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="s1">'css-loader'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.(woff2?|ttf|eot|svg|png|jpe?g|gif)$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="s1">'file'</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">({</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s1">'styles.css'</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">allChunks</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">}),</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">webpack</span><span class="p">.</span><span class="nx">optimize</span><span class="p">.</span><span class="nx">UglifyJsPlugin</span><span class="p">()</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||||
<span class="p">};</span><span class="w"></span>
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s1">'app'</span><span class="o">:</span><span class="w"> </span><span class="s1">'./js/main.js'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s1">'styles'</span><span class="o">:</span><span class="w"> </span><span class="s1">'./scss/main.scss'</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">path</span><span class="o">:</span><span class="w"> </span><span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'/assets/static/gen'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s1">'[name].js'</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">devtool</span><span class="o">:</span><span class="w"> </span><span class="s1">'#cheap-module-source-map'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">resolve</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">modules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'node_modules'</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nx">extensions</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'.js'</span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.js$/</span><span class="p">,</span><span class="w"> </span><span class="nx">exclude</span><span class="o">:</span><span class="w"> </span><span class="sr">/node_modules/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="s1">'babel-loader'</span><span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">.</span><span class="nx">extract</span><span class="p">({</span>
|
||||
<span class="w"> </span><span class="nx">fallback</span><span class="o">:</span><span class="w"> </span><span class="s1">'style-loader'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="s1">'css-loader!sass-loader'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.css$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">.</span><span class="nx">extract</span><span class="p">({</span>
|
||||
<span class="w"> </span><span class="nx">fallback</span><span class="o">:</span><span class="w"> </span><span class="s1">'style-loader'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="s1">'css-loader'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.(woff2?|ttf|eot|svg|png|jpe?g|gif)$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">loader</span><span class="o">:</span><span class="w"> </span><span class="s1">'file'</span><span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">ExtractTextPlugin</span><span class="p">({</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s1">'styles.css'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">allChunks</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}),</span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">webpack</span><span class="p">.</span><span class="nx">optimize</span><span class="p">.</span><span class="nx">UglifyJsPlugin</span><span class="p">()</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
<h2 id="creating-the-app">Creating the App</h2><p>Now we can start building our app. We configured at least two files
|
||||
in webpack: <code>js/main.js</code> and <code>scss/main.scss</code>. Those are the entry
|
||||
|
|
|
@ -195,7 +195,7 @@ important about this is that the slug expression must not fail even if fields
|
|||
are empty! This is necessary because new pages will start out with the
|
||||
fields not being filled in.</p>
|
||||
<p>This for instance includes a date in the URL if set:</p>
|
||||
<div class="hll"><pre><span></span><span class="na">slug_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ (this.date|dateformat('YYYY/M/') if this.date) ~ this._id }}</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="na">slug_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ (this.date|dateformat('YYYY/M/') if this.date) ~ this._id }}</span>
|
||||
</pre></div>
|
||||
<h2 id="pagination">Pagination</h2><p>In general a source document renders into a single page. The exception to
|
||||
that rule are pages with children which show the children on the rendered
|
||||
|
|
|
@ -147,20 +147,20 @@ Documentation</a> to Flow first.</p>
|
|||
are stored in the <code>flowblocks/</code> folder and are ini files just like models.</p>
|
||||
<p>Instead of using <code>[model]</code> as section, the section is called <code>[block]</code>.</p>
|
||||
<p>Here a very basic flow block model <code>flowblocks/text.ini</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[block]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text Block</span><span class="w"></span>
|
||||
<span class="na">button_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[block]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text Block</span>
|
||||
<span class="na">button_label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text</span>
|
||||
|
||||
<span class="k">[fields.text]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.text]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
|
||||
<span class="k">[fields.class]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Class</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span><span class="w"></span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">default, centered</span><span class="w"></span>
|
||||
<span class="na">choice_labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Default, Centered</span><span class="w"></span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">default</span><span class="w"></span>
|
||||
<span class="k">[fields.class]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Class</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">default, centered</span>
|
||||
<span class="na">choice_labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Default, Centered</span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">default</span>
|
||||
</pre></div>
|
||||
<p>This should be self explanatory. One thing that is different about blocks
|
||||
compared to regular models is that they support the <code>button_label</code> attribute
|
||||
|
|
|
@ -150,18 +150,18 @@ model has been explicitly selected, a default model will be selected. For
|
|||
most situations this will be the model with the name <code>page</code>. Detailed
|
||||
information can be found under <a href="selection/" class="ref">Default Model Selection</a>.</p>
|
||||
<p>Here is an example of a very basic model (<code>models/page.ini</code>):</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
<span class="na">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">large</span>
|
||||
|
||||
<span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre></div>
|
||||
<p>In this particular case, we have a model with the id <code>page</code> (as defined by the
|
||||
filename) and a name <code>Page</code> which will appear like that in the UI. Pages that
|
||||
|
|
|
@ -183,8 +183,8 @@ returns a dict like object to access the ini file.</p>
|
|||
<span class="n">value</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'section.key'</span><span class="p">,</span> <span class="s1">'default_value'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
<p>This would correspond to this config in <code>configs/my-plugin.ini</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[section]</span><span class="w"></span>
|
||||
<span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">the value</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[section]</span>
|
||||
<span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">the value</span>
|
||||
</pre></div>
|
||||
<h2 id="dependency-tracking">Dependency Tracking</h2><p>While a lot of dependencies are tracked automatically, when you develop a
|
||||
plugin you probably will discover that sometimes you need to track your own
|
||||
|
@ -228,9 +228,9 @@ function we also track the plugin's filename to rebuild if the plugin changes.</
|
|||
<h2 id="adding-new-field-types">Adding New Field Types</h2><p>Let's say you want to add an "asciidoc"
|
||||
<a href="../../api/db/types/" class="ref">field type</a> so you can write with <a href="http://www.methods.co.nz/asciidoc">AsciiDoc</a> markup.</p>
|
||||
<p>First <a href="http://www.methods.co.nz/asciidoc/INSTALL.html">install AsciiDoc</a> so its command-line program is available. Then update <code>blog-post.ini</code> from the <a href="../../guides/blog/" class="ref">blog guide</a> like so:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">asciidoc # Custom type.</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">asciidoc</span><span class="w"> </span><span class="c1"># Custom type.</span>
|
||||
</pre></div>
|
||||
<p>In a blog post's <code>contents.lr</code>, write some AsciiDoc like:</p>
|
||||
<pre><code>body:
|
||||
|
|
|
@ -142,9 +142,9 @@ to use plugins and how to build your own.</p>
|
|||
For completely automated plugin management just open your project file in a
|
||||
text editor and edit or extend the <code>[packages]</code> section. Just add a line
|
||||
for each plugin in the form <code>name = version</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-cool-plugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.0</span><span class="w"></span>
|
||||
<span class="na">lektor-other-plugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.2</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span>
|
||||
<span class="na">lektor-cool-plugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.0</span>
|
||||
<span class="na">lektor-other-plugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.2</span>
|
||||
</pre></div>
|
||||
<p>It's also possible to use the <a href="../cli/plugins/add/" class="ref">plugins add</a> command
|
||||
<code>lektor plugin add NAME</code> to automatically add the latest version of a plugin
|
||||
|
|
|
@ -146,8 +146,8 @@
|
|||
identify the project for the user interface. The project file is an INI file
|
||||
(UTF-8 encoded like everything else in Lektor) and the minimal content is the
|
||||
name of the project:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Fancy Project</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Fancy Project</span>
|
||||
</pre></div>
|
||||
<p>The name of the file can be arbitrary but must have the <code>.lektorproject</code>
|
||||
extension or Lektor will not be able to find it. When Lektor looks for a
|
||||
|
@ -247,19 +247,19 @@ or match your custom <code>excluded_assets</code> pattern. The wildcard syntax f
|
|||
<a href="https://docs.python.org/2/library/fnmatch.html">fnmatch</a>.</p>
|
||||
</blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Website</span><span class="w"></span>
|
||||
<span class="na">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.mywebsite.invalid/</span><span class="w"></span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">de_DE</span><span class="w"></span>
|
||||
<span class="na">excluded_assets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">*.backup, *~</span><span class="w"></span>
|
||||
<span class="na">included_assets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_special_file</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Website</span>
|
||||
<span class="na">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.mywebsite.invalid/</span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">de_DE</span>
|
||||
<span class="na">excluded_assets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">*.backup, *~</span>
|
||||
<span class="na">included_assets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_special_file</span>
|
||||
</pre></div>
|
||||
<h3 id="packages"><code>[packages]</code></h3><p>This section controls the packages (plugins) that should be installed for
|
||||
this project. It's a simple key/value list where the key is the plugin
|
||||
name and the value is the version number.</p>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-webpack-support</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.1</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span>
|
||||
<span class="na">lektor-webpack-support</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.1</span>
|
||||
</pre></div>
|
||||
<h3 id="servers.*]`"><code>[servers.*]</code></h3><p>This section can be repeated and each instance sets up a server. The <code>*</code>
|
||||
needs to be replaced with the ID of the server. This ID is used by the
|
||||
|
@ -281,11 +281,11 @@ to the deployment guides.</p>
|
|||
is configured it's an implicit default.</p>
|
||||
</blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[servers.production]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">rsync://server/path/to/folder</span>
|
||||
</pre></div>
|
||||
<h3 id="alternatives.*]`"><code>[alternatives.*]</code></h3><p>This configures <a href="../../content/alts/" class="ref">Alternatives</a>. It is repeated for
|
||||
each intended alternative. The default behavior is that alternatives are
|
||||
|
@ -309,22 +309,22 @@ more information about this refer to the guide.</p>
|
|||
<blockquote><p>This setting can override the global site locale for a specific alternative.</p>
|
||||
</blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[alternatives.en]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">English</span><span class="w"></span>
|
||||
<span class="na">primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en_US</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[alternatives.en]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">English</span>
|
||||
<span class="na">primary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en_US</span>
|
||||
|
||||
<span class="k">[alternatives.fr]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">French</span><span class="w"></span>
|
||||
<span class="na">url_prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/fr/</span><span class="w"></span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">fr</span><span class="w"></span>
|
||||
<span class="k">[alternatives.fr]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">French</span>
|
||||
<span class="na">url_prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/fr/</span>
|
||||
<span class="na">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">fr</span>
|
||||
</pre></div>
|
||||
<h3 id="attachment-types"><code>[attachment_types]</code></h3><p>Lektor does some basic attachment type detection based on file extension. This is what powers the <code>this.attachemnts.images</code> and <code>this.attachments.videos</code> attributes for instance. If the built-in map does not cover your file extension you can extend it or add new attachement types on a project by project basis.</p>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[attachment_types]</span><span class="w"></span>
|
||||
<span class="c1">; <.file-ext> = <type></span><span class="w"></span>
|
||||
<span class="na">.gpx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gpx</span><span class="w"></span>
|
||||
<span class="na">.ogv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">video</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[attachment_types]</span>
|
||||
<span class="c1">; <.file-ext> = <type></span>
|
||||
<span class="na">.gpx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gpx</span>
|
||||
<span class="na">.ogv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">video</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
</ul>
|
||||
|
||||
<div class="admonition admonition-warning"><p>Not implemented yet.</p></div><p>You could create a basic empty theme with the following command:</p>
|
||||
<div class="hll"><pre><span></span>$ lektor dev new-theme
|
||||
<div class="hll"><pre><span></span>$<span class="w"> </span>lektor<span class="w"> </span>dev<span class="w"> </span>new-theme
|
||||
</pre></div>
|
||||
<h2 id="theme-components">Theme Components:</h2><p>A theme could provide templates, assets, and models (also flowblocks):</p>
|
||||
<pre><code>demo-theme
|
||||
|
@ -156,13 +156,13 @@
|
|||
</code></pre>
|
||||
<h2 id="the-theme-settings-variable">The theme_settings Variable</h2><p>A <code>theme_settings</code> section in <code>.lektorproject</code> file could be used to
|
||||
parametrize themes:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[theme_settings]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Lektor"</span><span class="w"></span>
|
||||
<span class="na">github_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"https://github.com/lektor"</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[theme_settings]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Lektor"</span>
|
||||
<span class="na">github_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"https://github.com/lektor"</span>
|
||||
</pre></div>
|
||||
<p>And those settings will be accessed in templates through the config env
|
||||
variable:</p>
|
||||
<div class="hll"><pre><span></span><span class="cp">{{</span> <span class="nv">config.theme_settings</span><span class="err">.</span><span class="o"><</span><span class="nv">variable_name</span><span class="o">></span> <span class="cp">}}</span><span class="x"></span>
|
||||
<div class="hll"><pre><span></span><span class="cp">{{</span> <span class="nv">config.theme_settings</span><span class="err">.</span><span class="o"><</span><span class="nv">variable_name</span><span class="o">></span> <span class="cp">}}</span>
|
||||
</pre></div>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="x"><a href="</span><span class="cp">{{</span> <span class="nv">config.theme_settings.github_url</span> <span class="cp">}}</span><span class="x">">Github</a></span>
|
||||
|
@ -173,27 +173,27 @@ variable:</p>
|
|||
<h2 id="the-theme-ini-file">The theme.ini File</h2><p>Themes could provide a <code>theme.ini</code> file, that is optional, but it's required if
|
||||
you want to add your theme to the lektor community themes.</p>
|
||||
<p>Example:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[theme]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Demo theme</span><span class="w"></span>
|
||||
<span class="na">license</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">MIT</span><span class="w"></span>
|
||||
<span class="na">licenselink</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://github.com/lektor/lektor-demo-theme/blob/master/LICENSE.md</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Simple, minimal theme for Lektor</span><span class="w"></span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://github.com/lektor/lektor-demo-theme</span><span class="w"></span>
|
||||
<span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">simple, minimal, demo</span><span class="w"></span>
|
||||
<span class="na">features</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog</span><span class="w"></span>
|
||||
<span class="na">lektor_minimum_required_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">3.1</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[theme]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Demo theme</span>
|
||||
<span class="na">license</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">MIT</span>
|
||||
<span class="na">licenselink</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://github.com/lektor/lektor-demo-theme/blob/master/LICENSE.md</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Simple, minimal theme for Lektor</span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://github.com/lektor/lektor-demo-theme</span>
|
||||
<span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">simple, minimal, demo</span>
|
||||
<span class="na">features</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog</span>
|
||||
<span class="na">lektor_minimum_required_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">3.1</span>
|
||||
|
||||
<span class="k">[author]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor</span><span class="w"></span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">http://getlektor.com/</span><span class="w"></span>
|
||||
<span class="k">[author]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor</span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">http://getlektor.com/</span>
|
||||
|
||||
<span class="k">[original]</span><span class="w"></span>
|
||||
<span class="na">author</span><span class="w"> </span><span class="o">=</span><span class="w"></span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span><span class="w"></span>
|
||||
<span class="na">repo</span><span class="w"> </span><span class="o">=</span><span class="w"></span>
|
||||
<span class="k">[original]</span>
|
||||
<span class="na">author</span><span class="w"> </span><span class="o">=</span>
|
||||
<span class="na">homepage</span><span class="w"> </span><span class="o">=</span>
|
||||
<span class="na">repo</span><span class="w"> </span><span class="o">=</span>
|
||||
|
||||
<span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-disqus-comments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.2</span><span class="w"></span>
|
||||
<span class="k">[packages]</span>
|
||||
<span class="na">lektor-disqus-comments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.2</span>
|
||||
</pre></div>
|
||||
<p>The <code>[original]</code> section is only required if you are porting an existing theme.</p>
|
||||
<div class="admonition admonition-warning"><p>Not implemented yet</p></div><p>The <code>lektor_minimum_required_version</code> is used by Lektor to check the
|
||||
|
|
|
@ -149,12 +149,12 @@
|
|||
</code></pre>
|
||||
<p>Themes are normally distributed by public Git repositories, so you could install a theme by
|
||||
cloning the repo:</p>
|
||||
<div class="hll"><pre><span></span><span class="nb">cd</span> themes
|
||||
git clone URL_TO_THEME_REPO
|
||||
<div class="hll"><pre><span></span><span class="nb">cd</span><span class="w"> </span>themes
|
||||
git<span class="w"> </span>clone<span class="w"> </span>URL_TO_THEME_REPO
|
||||
</pre></div>
|
||||
<p>For example, for installing <code>lektor-theme-nix</code>:</p>
|
||||
<div class="hll"><pre><span></span><span class="nb">cd</span> themes
|
||||
git clone https://github.com/rlaverde/lektor-theme-nix.git
|
||||
<div class="hll"><pre><span></span><span class="nb">cd</span><span class="w"> </span>themes
|
||||
git<span class="w"> </span>clone<span class="w"> </span>https://github.com/rlaverde/lektor-theme-nix.git
|
||||
</pre></div>
|
||||
<p>If you download several themes, setting <code>themes</code> variable will allow you to only load
|
||||
a particular theme.</p>
|
||||
|
@ -163,8 +163,8 @@ search in the
|
|||
<!-- FIXME: use this link when theme showcase exists [community themes](/themes/) -->
|
||||
<a href="https://github.com/lektor/lektor-themes" class="ext">community themes</a>
|
||||
and automatically install it.</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span><span class="w"></span>
|
||||
<span class="na">themes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor-theme-nix</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span>
|
||||
<span class="na">themes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor-theme-nix</span>
|
||||
</pre></div>
|
||||
<h2 id="installing-multiple-themes">Installing Multiple Themes</h2><p>Lektor also supports installing several themes. Copy them to the <code>themes/</code>
|
||||
folder, and set the <code>themes</code> variable to indicate the precedence (optional).</p>
|
||||
|
@ -177,8 +177,8 @@ folder, and set the <code>themes</code> variable to indicate the precedence (opt
|
|||
├── lektor-theme-other-theme/
|
||||
└── lektor-theme-nix/
|
||||
</code></pre>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span><span class="w"></span>
|
||||
<span class="na">themes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor-theme-nix, lektor-theme-other-theme</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[project]</span>
|
||||
<span class="na">themes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">lektor-theme-nix, lektor-theme-other-theme</span>
|
||||
</pre></div>
|
||||
<p>This will make <code>lektor-theme-nix</code>, because it's listed first, have a higher precedence.
|
||||
Files present in multiple themes will be loaded from right to left, so that the first (left-most)
|
||||
|
|
|
@ -134,8 +134,8 @@ the theme.</p>
|
|||
<ol>
|
||||
<li><p>You could use the <code>[packages]</code> section of the <code>theme.ini</code> to install
|
||||
released packages:</p>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-disqus-comments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.2</span><span class="w"></span>
|
||||
<div class="hll"><pre><span></span><span class="k">[packages]</span>
|
||||
<span class="na">lektor-disqus-comments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.2</span>
|
||||
</pre></div>
|
||||
</li>
|
||||
<li><p>Plugins can be added to the <code>packages/</code> folder in the theme. Each plugin has
|
||||
|
|
|
@ -151,7 +151,7 @@ speak multiple languages and allow you to easily create localized websites.</li>
|
|||
<div class="slideshow-wrapper">
|
||||
<div class="slideshow">
|
||||
<div class="slideshow-inner">
|
||||
<div class="carousel slide" data-ride="carousel" data-interval="8500" id="carousel-8f723f81b6814daf8580cedff0a9454f">
|
||||
<div class="carousel slide" data-ride="carousel" data-interval="8500" id="carousel-8ca12761d772490da02699faa5327fcc">
|
||||
|
||||
<div class="carousel-inner" role="listbox">
|
||||
|
||||
|
@ -210,11 +210,11 @@ be completely customized.</p>
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<a class="left carousel-control" href="#carousel-8f723f81b6814daf8580cedff0a9454f" role="button" data-slide="prev">
|
||||
<a class="left carousel-control" href="#carousel-8ca12761d772490da02699faa5327fcc" role="button" data-slide="prev">
|
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a class="right carousel-control" href="#carousel-8f723f81b6814daf8580cedff0a9454f" role="button" data-slide="next">
|
||||
<a class="right carousel-control" href="#carousel-8ca12761d772490da02699faa5327fcc" role="button" data-slide="next">
|
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
|
|
|
@ -138,30 +138,30 @@
|
|||
<p>Inspired by the <a href="https://github.com/lektor/lektor-website/tree/master/packages/atom-feed-support" rel="nofollow">atom-feed-support</a> plugin Armin Ronacher wrote for the Lektor official blog.</p>
|
||||
<h2>Installation</h2>
|
||||
<p>Add lektor-atom to your project from command line:</p>
|
||||
<pre lang="sh">lektor plugins add lektor-atom
|
||||
<pre lang="sh">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-atom
|
||||
</pre>
|
||||
<p>See <a href="https://www.getlektor.com/docs/plugins/" rel="nofollow">the Lektor documentation for more instructions on installing plugins</a>.</p>
|
||||
<h2>Configuration</h2>
|
||||
<p>Here is a basic configuration:</p>
|
||||
<pre lang="ini"><span class="k">[feed]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Site's Blog</span><span class="w"></span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span><span class="w"></span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/feed.xml</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[feed]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Site's Blog</span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/feed.xml</span>
|
||||
</pre>
|
||||
<p>For each feed you want to publish, add a section to <code>configs/atom.ini</code>. For example, a blog with a feed of all recent posts, and a feed of recent posts about coffee:</p>
|
||||
<pre lang="ini"><span class="k">[blog]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Blog</span><span class="w"></span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span><span class="w"></span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/feed.xml</span><span class="w"></span>
|
||||
<span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/').filter(F.type == 'post')</span><span class="w"></span>
|
||||
<span class="na">item_model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[blog]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Blog</span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/feed.xml</span>
|
||||
<span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/').filter(F.type == 'post')</span>
|
||||
<span class="na">item_model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span>
|
||||
|
||||
<span class="k">[coffee]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Blog: Articles About Coffee</span><span class="w"></span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span><span class="w"></span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/category/coffee/feed.xml</span><span class="w"></span>
|
||||
<span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/blog').filter(F.categories.contains('coffee'))</span><span class="w"></span>
|
||||
<span class="na">item_model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span><span class="w"></span>
|
||||
<span class="k">[coffee]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">My Blog: Articles About Coffee</span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span>
|
||||
<span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/category/coffee/feed.xml</span>
|
||||
<span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">site.query('/blog').filter(F.categories.contains('coffee'))</span>
|
||||
<span class="na">item_model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">blog-post</span>
|
||||
</pre>
|
||||
<p>The section names, like <code>blog</code> and <code>coffee</code>, are just used as internal identifiers.</p>
|
||||
<h3>Options</h3>
|
||||
|
@ -243,19 +243,19 @@
|
|||
</table>
|
||||
<h3>Customizing the plugin for your models</h3>
|
||||
<p>Use the field options to tell lektor-atom how to read your items. For example, if your site's model is:</p>
|
||||
<pre lang="ini"><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog</span>
|
||||
|
||||
<span class="k">[fields.writer]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.writer]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.short_description]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.short_description]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
</pre>
|
||||
<p>Then add to atom.ini:</p>
|
||||
<pre lang="ini"><span class="k">[main]</span><span class="w"></span>
|
||||
<span class="na">blog_author_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">writer</span><span class="w"></span>
|
||||
<span class="na">blog_summary_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">short_description</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[main]</span>
|
||||
<span class="na">blog_author_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">writer</span>
|
||||
<span class="na">blog_summary_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">short_description</span>
|
||||
</pre>
|
||||
<p>See <a href="https://github.com/ajdavis/lektor-atom/blob/master/tests/demo-project/configs/atom.ini" rel="nofollow">tests/demo-project/configs/atom.ini</a> for a complete example.</p>
|
||||
<h3>Filtering items</h3>
|
||||
|
@ -263,8 +263,8 @@
|
|||
<p>Set <code>items</code> to any query expression to override the default. If <code>items_model</code> is <em>also</em> specified, lektor-atom applies it as a filter to <code>items</code>.</p>
|
||||
<h2>Use In Templates</h2>
|
||||
<p>You can link to a specific feed in your template. If your <code>atom.ini</code> contains a feed like this:</p>
|
||||
<pre lang="ini"><span class="k">[main]</span><span class="w"></span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[main]</span>
|
||||
<span class="na">source_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span>
|
||||
</pre>
|
||||
<p>Link to the feed in a template like this:</p>
|
||||
<pre><code>{{ '/blog@atom/main'|url }}
|
||||
|
|
|
@ -139,14 +139,14 @@ enabled a <code>render_disqus_comments</code> function which can render a disqus
|
|||
box.</p>
|
||||
<h2>Enabling the Plugin</h2>
|
||||
<p>To enable the plugin add this to your project file:</p>
|
||||
<pre lang="shell">$ lektor plugins add lektor-disqus-comments
|
||||
<pre lang="shell">$<span class="w"> </span>lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-disqus-comments
|
||||
</pre>
|
||||
<h2>Configuring the Plugin</h2>
|
||||
<p>The plugin has a config file that is needed to inform it about your
|
||||
website. Just create a file named <code>disqus-comments.ini</code> into your
|
||||
<code>configs/</code> folder and configure the <code>shortname</code> key with the name of
|
||||
your disqus community:</p>
|
||||
<pre lang="ini"><span class="na">shortname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_SHORTNAME</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">shortname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_SHORTNAME</span>
|
||||
</pre>
|
||||
<h2>In Templates</h2>
|
||||
<p>Now you can add a discussion box to any of your templates by just using
|
||||
|
|
|
@ -161,18 +161,18 @@ will always evaluate to a string.</p>
|
|||
be used display lists of other pages on your site.
|
||||
You could create a model definition like this (called, perhaps,
|
||||
<code>models/index.ini</code>):</p>
|
||||
<pre lang="ini"><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Index Page</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Index: {{ this.title}}</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Index Page</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Index: {{ this.title}}</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.items]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Items</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">expression</span><span class="w"></span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Pages to list on this page</span><span class="w"></span>
|
||||
<span class="k">[fields.items]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Items</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">expression</span>
|
||||
<span class="na">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Pages to list on this page</span>
|
||||
</pre>
|
||||
<p>In a particular index page which uses this model, you might set the
|
||||
<code>items</code> field to
|
||||
|
|
|
@ -190,11 +190,11 @@ this will select the minimum of all the timestamps remaining after any filtering
|
|||
</ul>
|
||||
<h2>Examples</h2>
|
||||
<p>Here is a simple example excerpt from a datamodel file:</p>
|
||||
<pre lang="ini"><span class="na"><...></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na"><...></span>
|
||||
|
||||
<span class="k">[fields.last_mod]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time last modified</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span><span class="w"></span>
|
||||
<span class="k">[fields.last_mod]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time last modified</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span>
|
||||
</pre>
|
||||
<p>On a page using the above datamodel, so long as the <code>last_mod</code> field
|
||||
is left blank in the <code>contents.lr</code> file, the page modification time
|
||||
|
@ -203,18 +203,18 @@ affected that <code>contents.lr</code>. (Or if that file is dirty, the value of
|
|||
<code>last_mod</code> will be taken from the file’s filesystem mtime.)</p>
|
||||
<hr>
|
||||
<p>Here is a more complicated example which demonstrates the use of all the options.</p>
|
||||
<pre lang="ini"><span class="na"><...></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na"><...></span>
|
||||
|
||||
<span class="k">[fields.pub_date]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time first published</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span><span class="w"></span>
|
||||
<span class="na">strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">first</span><span class="w"></span>
|
||||
<span class="k">[fields.pub_date]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time first published</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span>
|
||||
<span class="na">strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">first</span>
|
||||
|
||||
<span class="k">[fields.last_mod]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time last modified</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span><span class="w"></span>
|
||||
<span class="na">ignore_commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">\[nochange\]</span><span class="w"></span>
|
||||
<span class="na">skip_first_commit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span><span class="w"></span>
|
||||
<span class="k">[fields.last_mod]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Time last modified</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">gittimestamp</span>
|
||||
<span class="na">ignore_commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">\[nochange\]</span>
|
||||
<span class="na">skip_first_commit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span>
|
||||
</pre>
|
||||
<p>This will get the default value of the <code>pub_date</code> field from the
|
||||
timestamp of the first (earliest) git commit for the source file.</p>
|
||||
|
|
|
@ -140,8 +140,8 @@ include Google-Search code in final HTML fles rendered by Lektor.</p>
|
|||
<h2>How to Use the plugin ?</h2>
|
||||
<h3>Enable the plugin</h3>
|
||||
<p>To enable the plugin, add the following to your <code>.lektorproject</code> file:</p>
|
||||
<pre lang="ini"><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-google-search</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.1</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[packages]</span>
|
||||
<span class="na">lektor-google-search</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.1</span>
|
||||
</pre>
|
||||
<h3>Configure the plugin</h3>
|
||||
<p>The plugin needs a config file with your <code>search Engine ID</code> code in it</p>
|
||||
|
@ -149,7 +149,7 @@ include Google-Search code in final HTML fles rendered by Lektor.</p>
|
|||
<li>Create a file named <code>google-serch.ini</code> into <code>./configs</code> folder in your lektor project's base directory.</li>
|
||||
<li>Put the <code>SEARCH_ENGINE_ID</code> key with the value of your serch engine ID.</li>
|
||||
</ul>
|
||||
<pre lang="ini"><span class="na">SEARCH_ENGINE_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">83892839209432084</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">SEARCH_ENGINE_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">83892839209432084</span>
|
||||
</pre>
|
||||
<h3>Usage in template</h3>
|
||||
<p>Add Google Search code snippet by calling the function <code>render_google_search()</code> in the template of your preference where you want the search box to appear.</p>
|
||||
|
|
|
@ -160,7 +160,7 @@ All images will be converted to webp using <a href="https://pypi.org/project/Pil
|
|||
<h2>Installation</h2>
|
||||
<p>To install the plugin, add <code>lektor-image-resize</code> to your plugins from the command line and create a config file:</p>
|
||||
<pre lang="bash"><span class="c1"># add the plugin to lektor</span>
|
||||
lektor plugins add lektor-image-resize
|
||||
lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-image-resize
|
||||
</pre>
|
||||
<p>If you have trouble, see the <a href="https://www.getlektor.com/docs/plugins/" rel="nofollow">plugin
|
||||
installation</a> section of the Lektor
|
||||
|
@ -169,15 +169,15 @@ documentation.</p>
|
|||
a few sections for images. The section names can be whatever you want, the
|
||||
final images will be called <code>$(imagename)-$(sectionname).jpg</code> and <code>$(imagename)-$(sectionname).webp</code>.</p>
|
||||
<p>Here is a example config file:</p>
|
||||
<pre lang="ini"><span class="k">[small]</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">640</span><span class="w"></span>
|
||||
<span class="na">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">360</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[small]</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">640</span>
|
||||
<span class="na">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">360</span>
|
||||
|
||||
<span class="k">[medium]</span><span class="w"></span>
|
||||
<span class="na">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">720</span><span class="w"></span>
|
||||
<span class="k">[medium]</span>
|
||||
<span class="na">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">720</span>
|
||||
|
||||
<span class="k">[woowee]</span><span class="w"></span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1920</span><span class="w"></span>
|
||||
<span class="k">[woowee]</span>
|
||||
<span class="na">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1920</span>
|
||||
</pre>
|
||||
<p>Will take a file called <code>waffle.jpg</code> and create the files <code>waffle-small.jpg</code>,
|
||||
<code>waffle-medium.jpg</code> and <code>waffle-woowee.jpg</code> as well as <code>waffle-small.webp</code>,
|
||||
|
|
|
@ -149,13 +149,13 @@
|
|||
<h2>Examples</h2>
|
||||
<p>Querying context: <code>{{ site.get('/').title }}</code> or <code>{{ this.path }}</code></p>
|
||||
<p>Logic:</p>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_life</span><span class="o">,</span> <span class="nv">meaning_of_universe</span> <span class="o">=</span> <span class="nv">this.life</span><span class="o">,</span> <span class="nv">this.universe</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">if</span> <span class="nv">meaning_of_life</span> <span class="o">==</span> <span class="nv">meaning_of_universe</span> <span class="o">==</span> <span class="m">42</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="x"> </span><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_it_all</span> <span class="o">=</span> <span class="nv">meaning_of_life</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">else</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="x"> </span><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_it_all</span> <span class="o">=</span> <span class="s1">'Undefined'</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">endif</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{{</span> <span class="nv">meaning_of_it_all</span> <span class="cp">}}</span><span class="x"></span>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_life</span><span class="o">,</span> <span class="nv">meaning_of_universe</span> <span class="o">=</span> <span class="nv">this.life</span><span class="o">,</span> <span class="nv">this.universe</span> <span class="cp">%}</span>
|
||||
<span class="cp">{%</span> <span class="k">if</span> <span class="nv">meaning_of_life</span> <span class="o">==</span> <span class="nv">meaning_of_universe</span> <span class="o">==</span> <span class="m">42</span> <span class="cp">%}</span>
|
||||
<span class="x"> </span><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_it_all</span> <span class="o">=</span> <span class="nv">meaning_of_life</span> <span class="cp">%}</span>
|
||||
<span class="cp">{%</span> <span class="k">else</span> <span class="cp">%}</span>
|
||||
<span class="x"> </span><span class="cp">{%</span> <span class="k">set</span> <span class="nv">meaning_of_it_all</span> <span class="o">=</span> <span class="s1">'Undefined'</span> <span class="cp">%}</span>
|
||||
<span class="cp">{%</span> <span class="k">endif</span> <span class="cp">%}</span>
|
||||
<span class="cp">{{</span> <span class="nv">meaning_of_it_all</span> <span class="cp">}}</span>
|
||||
</pre>
|
||||
<p>Jinja in Markdown:</p>
|
||||
<pre lang="jinja"><span class="x">[link text](</span><span class="cp">{{</span> <span class="nv">this</span><span class="o">|</span><span class="nf">url</span> <span class="cp">}}</span><span class="x">)</span>
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
<p>Lektor plugin to run <cite>make lektor</cite> for custom build systems.</p>
|
||||
<section id="install">
|
||||
<h2>Install</h2>
|
||||
<pre><code>python3 -m pip install lektor-make</code></pre>
|
||||
<pre><code>python3<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>lektor-make</code></pre>
|
||||
</section>
|
||||
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@
|
|||
are given anchors and a table of contents is collected.</p>
|
||||
<h2>Enabling the Plugin</h2>
|
||||
<p>To enable the plugin run this command:</p>
|
||||
<pre lang="shell">$ lektor plugins add markdown-header-anchors
|
||||
<pre lang="shell">$<span class="w"> </span>lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>markdown-header-anchors
|
||||
</pre>
|
||||
<h2>In Templates</h2>
|
||||
<p>Within templates it becomes possible to access the <code>.toc</code> property of
|
||||
|
@ -160,10 +160,10 @@ markdown data. It's a list where each item has the following attributes:</p>
|
|||
<p>Example rendering:</p>
|
||||
<pre lang="jinja"><span class="x"><h4>Table Of Contents</h4></span>
|
||||
<span class="x"><ul class="toc"></span>
|
||||
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">item</span> <span class="k">in</span> <span class="nv">this.body.toc</span> <span class="k">recursive</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">item</span> <span class="k">in</span> <span class="nv">this.body.toc</span> <span class="k">recursive</span> <span class="cp">%}</span>
|
||||
<span class="x"> <li><a href="#</span><span class="cp">{{</span> <span class="nv">item.anchor</span> <span class="cp">}}</span><span class="x">"></span><span class="cp">{{</span> <span class="nv">item.title</span> <span class="cp">}}</span><span class="x"></a></span><span class="cp">{%</span>
|
||||
<span class="k">if</span> <span class="nv">item.children</span> <span class="cp">%}</span><span class="x"><ul></span><span class="cp">{{</span> <span class="nb">loop</span><span class="o">(</span><span class="nv">item.children</span><span class="o">)</span> <span class="cp">}}</span><span class="x"></ul></span><span class="cp">{%</span> <span class="k">endif</span> <span class="cp">%}</span><span class="x"></li></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
<span class="x"></ul></span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -141,14 +141,14 @@
|
|||
Lektor's markdown support.</p>
|
||||
<h2>Enabling the Plugin</h2>
|
||||
<p>To enable the plugin run this command:</p>
|
||||
<pre lang="shell">lektor plugins add markdown-highlighter
|
||||
<pre lang="shell">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>markdown-highlighter
|
||||
</pre>
|
||||
<h2>Configuring the Plugin</h2>
|
||||
<p>The plugin has a config file that is used to configure a few things
|
||||
for Pygments. Just create a file named <code>markdown-highlighter.ini</code> into your
|
||||
<code>configs/</code> folder. Currently only <code>pygments.style</code> is used:</p>
|
||||
<pre lang="ini"><span class="k">[pygments]</span><span class="w"></span>
|
||||
<span class="na">style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">tango</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[pygments]</span>
|
||||
<span class="na">style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">tango</span>
|
||||
</pre>
|
||||
<p>You can use this to select any of the built-in Pygments styles. Support for
|
||||
custom styles will come in the future.</p>
|
||||
|
@ -167,7 +167,7 @@ can be used to generate and retrieve a link to the pygments stylesheet:</p>
|
|||
</pre>
|
||||
<p>In addition the <code>|pygmentize</code> filter can be used to highlight code from
|
||||
templates. It takes one argument which is the lexer name:</p>
|
||||
<pre lang="jinja"><span class="cp">{{</span> <span class="s1">'print "Hello World!"'</span><span class="o">|</span><span class="nf">pygmentize</span><span class="o">(</span><span class="s1">'python'</span><span class="o">)</span> <span class="cp">}}</span><span class="x"></span>
|
||||
<pre lang="jinja"><span class="cp">{{</span> <span class="s1">'print "Hello World!"'</span><span class="o">|</span><span class="nf">pygmentize</span><span class="o">(</span><span class="s1">'python'</span><span class="o">)</span> <span class="cp">}}</span>
|
||||
</pre>
|
||||
|
||||
|
||||
|
|
|
@ -132,14 +132,14 @@
|
|||
<h2>Installation</h2>
|
||||
<p>Install the <code>netlify</code> command-line program according to <a href="https://www.netlify.com/docs/cli" rel="nofollow">the instructions on netlify.com</a>.</p>
|
||||
<p>Add lektor-netlify to your project from the command line:</p>
|
||||
<pre lang="shell">lektor plugins add lektor-netlify
|
||||
<pre lang="shell">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-netlify
|
||||
</pre>
|
||||
<p>See <a href="https://www.getlektor.com/docs/plugins/" rel="nofollow">the Lektor documentation for more instructions on installing plugins</a>.</p>
|
||||
<h2>Configuration</h2>
|
||||
<p>Configure a server in your <code>.lektorproject</code> file:</p>
|
||||
<pre lang="ini"><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">netlify://my-domain.com</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.production]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">netlify://my-domain.com</span>
|
||||
</pre>
|
||||
<h2>Access Token</h2>
|
||||
<p>Get a personal access token from Netlify's "applications" page:</p>
|
||||
|
@ -147,16 +147,16 @@
|
|||
<li><a href="https://app.netlify.com/applications" rel="nofollow">Applications</a></li>
|
||||
</ul>
|
||||
<p>You must use this access token each time you publish. <strong>If your project file is private</strong> you can save the token there. Do not commit this!</p>
|
||||
<pre lang="ini"><span class="k">[servers.production]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">netlify://my-domain.com</span><span class="w"></span>
|
||||
<span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ACCESS_TOKEN</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.production]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Production</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">netlify://my-domain.com</span>
|
||||
<span class="na">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ACCESS_TOKEN</span>
|
||||
</pre>
|
||||
<p>Now deploy your site like:</p>
|
||||
<pre lang="shell">lektor deploy production
|
||||
<pre lang="shell">lektor<span class="w"> </span>deploy<span class="w"> </span>production
|
||||
</pre>
|
||||
<p>Otherwise, pass the token on the command line:</p>
|
||||
<pre lang="shell">lektor deploy production --key ACCESS_TOKEN
|
||||
<pre lang="shell">lektor<span class="w"> </span>deploy<span class="w"> </span>production<span class="w"> </span>--key<span class="w"> </span>ACCESS_TOKEN<span class="w"> </span>
|
||||
</pre>
|
||||
|
||||
|
||||
|
|
|
@ -158,16 +158,16 @@
|
|||
<p><code>lektor-npm-support</code> makes it easy to use <a href="https://parcel.js.org" rel="nofollow">Parcel</a>, <a href="https://webpack.js.org" rel="nofollow">webpack</a>, <a href="http://browserify.org/" rel="nofollow">browserify</a>, or any other tool to build assets for <a href="https://github.com/lektor/lektor" rel="nofollow">Lektor</a> projects.</p>
|
||||
<h2>Enabling the Plugin</h2>
|
||||
<p>To enable the plugin, run this command while inside your Lektor project directory:</p>
|
||||
<pre lang="bash">lektor plugins add lektor-npm-support
|
||||
<pre lang="bash">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-npm-support
|
||||
</pre>
|
||||
<h2>Example: Creating a <a href="https://parceljs.org/" rel="nofollow">Parcel</a> Project</h2>
|
||||
<p>Create a <code>parcel/</code> folder and inside that folder create the following files:</p>
|
||||
<h3><code>configs/npm-support.ini</code></h3>
|
||||
<p>This file instructs the plugin how to generate the assets:</p>
|
||||
<pre lang="ini"><span class="k">[parcel]</span><span class="w"></span>
|
||||
<span class="na">npm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yarn</span><span class="w"></span>
|
||||
<span class="na">watch_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">watch</span><span class="w"></span>
|
||||
<span class="na">build_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">build</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[parcel]</span>
|
||||
<span class="na">npm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yarn</span>
|
||||
<span class="na">watch_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">watch</span>
|
||||
<span class="na">build_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">build</span>
|
||||
</pre>
|
||||
<ul>
|
||||
<li>The section name <code>[parcel]</code> is the name of the folder where the Parcel project is located.</li>
|
||||
|
@ -178,15 +178,15 @@
|
|||
<p>This plugin supports more than one such entry.</p>
|
||||
<h3><code>parcel/package.json</code></h3>
|
||||
<p>This is a standard <code>package.json</code> file. It should contain two entries in the <code>scripts</code> section. The <code>build</code> script is used during <code>lektor build -f npm</code>, and the <code>watch</code> script is used during <code>lektor server -f npm</code>.</p>
|
||||
<pre lang="json"><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-parcel-project"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.0.0"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"scripts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"watch"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NODE_ENV=development parcel --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"build"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NODE_ENV=production parcel build --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"private"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<pre lang="json"><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-parcel-project"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.0.0"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"scripts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"watch"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NODE_ENV=development parcel --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"build"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NODE_ENV=production parcel build --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"private"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<p>Now we can use <code>yarn add</code> to add Parcel, <a href="https://babeljs.io/" rel="nofollow">Babel</a> and <a href="https://sass-lang.com/" rel="nofollow">Sass</a>:</p>
|
||||
<pre><code>$ cd </path/to/your/lektor/project>/parcel
|
||||
|
@ -194,19 +194,19 @@ $ yarn add parcel-bundler babel-preset-env node-sass
|
|||
</code></pre>
|
||||
<h3><code>parcel/babelr.rc</code></h3>
|
||||
<p>Next up is a simple Babel config file, using the recommended <code>env</code> preset.</p>
|
||||
<pre lang="json"><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"presets"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"env"</span><span class="p">]</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<pre lang="json"><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"presets"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"env"</span><span class="p">]</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<h3><code>parcel/main.scss</code></h3>
|
||||
<p>A simple SCSS file.</p>
|
||||
<pre lang="scss"><span class="nt">body</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">border</span><span class="nd">:</span><span class="w"> </span><span class="nt">10px</span><span class="w"> </span><span class="nt">solid</span><span class="w"> </span><span class="nt">red</span><span class="o">;</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<pre lang="scss"><span class="nt">body</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">border</span><span class="nd">:</span><span class="w"> </span><span class="nt">10px</span><span class="w"> </span><span class="nt">solid</span><span class="w"> </span><span class="nt">red</span><span class="o">;</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<h3><code>parcel/main.js</code></h3>
|
||||
<p>A simple Javascript file that imports the SCSS file so that Parcel will know to include it as well.</p>
|
||||
<pre lang="javascript"><span class="k">import</span><span class="w"> </span><span class="s1">'./main.scss'</span><span class="p">;</span><span class="w"></span>
|
||||
<pre lang="javascript"><span class="k">import</span><span class="w"> </span><span class="s1">'./main.scss'</span><span class="p">;</span>
|
||||
</pre>
|
||||
<h2>Running the Server</h2>
|
||||
<p>Now you're ready to go. When you run <code>lektor server</code> nothing wil happen,
|
||||
|
|
|
@ -150,45 +150,45 @@ with “<code>_type</code>” appended.</p>
|
|||
<h2>Examples</h2>
|
||||
<h3>Simple Example</h3>
|
||||
<p>Here is an example model file for a simple page, with a selectable body format:</p>
|
||||
<pre lang="ini"><span class="c1"># page.ini</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="c1"># page.ini</span>
|
||||
|
||||
<span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">polymorphic</span><span class="w"></span>
|
||||
<span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">polymorphic</span>
|
||||
|
||||
<span class="k">[fields.body_type]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body Type</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span><span class="w"></span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown, html, text</span><span class="w"></span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span><span class="w"></span>
|
||||
<span class="k">[fields.body_type]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body Type</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">select</span>
|
||||
<span class="na">choices</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown, html, text</span>
|
||||
<span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">markdown</span>
|
||||
</pre>
|
||||
<p>Here, the value of the <code>body_type</code> field on a particular page will
|
||||
determine whether the <code>body</code> field is interpreted as being <code>markdown</code>,
|
||||
<code>html</code> or <code>text</code>.</p>
|
||||
<h3>Contrived Example</h3>
|
||||
<p>Here is a contrived example showing the use of the <code>polymorphic_type</code> option:</p>
|
||||
<pre lang="ini"><span class="c1"># page.ini</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="c1"># page.ini</span>
|
||||
|
||||
<span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span><span class="w"></span>
|
||||
<span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Page</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.title }}</span>
|
||||
|
||||
<span class="k">[fields.title]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span><span class="w"></span>
|
||||
<span class="k">[fields.title]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Title</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">string</span>
|
||||
|
||||
<span class="k">[fields.body]</span><span class="w"></span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">polymorphic</span><span class="w"></span>
|
||||
<span class="na">polymorphic_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'html' if this.body.lstrip().startswith('<') else 'markdown'</span><span class="w"></span>
|
||||
<span class="k">[fields.body]</span>
|
||||
<span class="na">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Body</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">polymorphic</span>
|
||||
<span class="na">polymorphic_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'html' if this.body.lstrip().startswith('<') else 'markdown'</span>
|
||||
</pre>
|
||||
<p>In this case, the <code>body</code> field will be interpreted as raw HTML if the
|
||||
content of that field starts with a “<code><</code>”, otherwise it will be
|
||||
|
|
|
@ -148,26 +148,26 @@
|
|||
<p>Press Enter and lektor will automatically download and install this plugin for you.</p>
|
||||
<h2>Usage</h2>
|
||||
<p>After Installation, open your lektorproject file, first it should have a section like this:</p>
|
||||
<pre lang="ini"><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-qiniu</span><span class="o">=</span><span class="w"> </span><span class="s">0.1.3</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[packages]</span>
|
||||
<span class="na">lektor-qiniu</span><span class="o">=</span><span class="w"> </span><span class="s">0.1.3</span>
|
||||
</pre>
|
||||
<p>then below this section, you need add your bucket and folder(optional) as a target of a deploy server, like this:</p>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://<YOUR-BUCKET></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://<YOUR-BUCKET></span>
|
||||
</pre>
|
||||
<p>or if you want deploy your site to a folder in a bucket, mostly for backups, you can add server section as below:</p>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://<YOUR-BUCKET>/<NAME-OF-FOLDER></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://<YOUR-BUCKET>/<NAME-OF-FOLDER></span>
|
||||
</pre>
|
||||
<p>for example, if you want to deploy your site to a bucket name "abcde", folder "fjhi", you will need to add a server section as below:</p>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://abcde/fjhi</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.qiniu]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">qiniu://abcde/fjhi</span>
|
||||
</pre>
|
||||
<p>after this you should see a server shows when you push the deploy button in your Lektor Admin Dashboard.</p>
|
||||
<p>but still you will need just 5 minutes to configure this plugin to make it works.</p>
|
||||
|
@ -177,16 +177,16 @@
|
|||
<p>In configs folder, create a configuration file exactly named <strong>qiniu.ini</strong>.</p>
|
||||
<h4>Attention: DO NOT name the configuration file with other names, otherwise this plugin will not work properly.</h4>
|
||||
<p>In this configuration file, you will need add few more sections, you can copy a sample configuration ini file from the sample_config folder, it looks like this:</p>
|
||||
<pre lang="ini"><span class="k">[auth]</span><span class="w"></span>
|
||||
<span class="na">Access_Key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">replace_with_your_own_AK</span><span class="w"></span>
|
||||
<span class="na">Secret_Key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">replace_with_your_won_SK</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[auth]</span>
|
||||
<span class="na">Access_Key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">replace_with_your_own_AK</span>
|
||||
<span class="na">Secret_Key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">replace_with_your_won_SK</span>
|
||||
|
||||
<span class="k">[cdn]</span><span class="w"></span>
|
||||
<span class="na">refresh_enable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">refresh_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.your-own-site.com/</span><span class="w"></span>
|
||||
<span class="k">[cdn]</span>
|
||||
<span class="na">refresh_enable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">refresh_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://www.your-own-site.com/</span>
|
||||
|
||||
<span class="k">[exclusions]</span><span class="w"></span>
|
||||
<span class="na">dirs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">.lektor</span><span class="w"></span>
|
||||
<span class="k">[exclusions]</span>
|
||||
<span class="na">dirs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">.lektor</span>
|
||||
<span class="na">files</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
|
||||
</pre>
|
||||
<h4>Credentials</h4>
|
||||
|
@ -197,9 +197,9 @@
|
|||
<h4>exclusions</h4>
|
||||
<p>Another function this plugin provides is exclude folders or files you want to upload during deployment.</p>
|
||||
<p>To exclude files or folders, just put the name of the folders or files in the <strong>exclusions</strong> section of configuration file, separated each one with commas.</p>
|
||||
<pre lang="ini"><span class="k">[exclusions]</span><span class="w"></span>
|
||||
<span class="na">dirs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">.lektor, dir1, dir2</span><span class="w"></span>
|
||||
<span class="na">files</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">file1, file2,file3</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[exclusions]</span>
|
||||
<span class="na">dirs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">.lektor, dir1, dir2</span>
|
||||
<span class="na">files</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">file1, file2,file3</span>
|
||||
</pre>
|
||||
<p>One special folder here is <strong>.lektor</strong>, which Lektor officially suggests that this folder should be exclude during deployment, therefore you should keep at least this one, unless you have other needs for this folder.</p>
|
||||
<h3>About Lektor CMS</h3>
|
||||
|
|
|
@ -152,14 +152,14 @@ Remember to do this <strong>first</strong> because lektor-s3 won't do it automat
|
|||
<p>You should see a message saying lektor-s3 has been added to the project.</p>
|
||||
<p>Next, add an S3 bucket to your project's servers. In your project file
|
||||
(like <code>blog.lektorproject</code>), add the following:</p>
|
||||
<pre lang="ini"><span class="k">[servers.s3]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">S3</span><span class="w"></span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">s3://<YOUR-BUCKET></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.s3]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">S3</span>
|
||||
<span class="na">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">s3://<YOUR-BUCKET></span>
|
||||
</pre>
|
||||
<p>For example, if you wanted to deploy to a bucket named 'huntedwumpus',
|
||||
you'd make that last line</p>
|
||||
<pre lang="ini"><span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">s3://huntedwumpus</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">s3://huntedwumpus</span>
|
||||
</pre>
|
||||
<p>Now, if you call <code>lektor deploy s3</code>, Lektor will upload your built
|
||||
website to S3 in the bucket you targeted.</p>
|
||||
|
@ -167,7 +167,7 @@ website to S3 in the bucket you targeted.</p>
|
|||
<p>Optionally, you can also provide a <a href="https://aws.amazon.com/cloudfront/" rel="nofollow">CloudFront</a>
|
||||
distribution ID. If you do, Lektor will invalidate all objects in that CloudFront
|
||||
distribution after every deploy.</p>
|
||||
<pre lang="ini"><span class="na">cloudfront</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><YOUR-DISTRIBUTION-ID></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">cloudfront</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><YOUR-DISTRIBUTION-ID></span>
|
||||
</pre>
|
||||
<h2>Credentials</h2>
|
||||
<p>You need to prove to S3 that you have permission to upload to the
|
||||
|
@ -181,16 +181,16 @@ and <code>AWS_SECRET_ACCESS_KEY</code>.</p>
|
|||
<p>If you have multiple sets of credentials, you can group them into profiles in
|
||||
your credentials file and choose the right one using the <code>AWS_PROFILE</code>
|
||||
environment variable. Your <code>~/.aws/credenials</code> file might look like this:</p>
|
||||
<pre lang="ini"><span class="k">[work]</span><span class="w"></span>
|
||||
<span class="na">aws_access_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span><span class="w"></span>
|
||||
<span class="na">aws_secret_access_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[work]</span>
|
||||
<span class="na">aws_access_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span>
|
||||
<span class="na">aws_secret_access_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span>
|
||||
|
||||
<span class="k">[personal]</span><span class="w"></span>
|
||||
<span class="na">aws_access_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span><span class="w"></span>
|
||||
<span class="na">aws_secret_access_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span><span class="w"></span>
|
||||
<span class="k">[personal]</span>
|
||||
<span class="na">aws_access_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span>
|
||||
<span class="na">aws_secret_access_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s"><...></span>
|
||||
</pre>
|
||||
<p>And then you can invoke <code>lektor</code> with the environment variable:</p>
|
||||
<pre lang="console"><span class="gp">$ </span><span class="nv">AWS_PROFILE</span><span class="o">=</span>personal lektor deploy<span class="sb">`</span>
|
||||
<pre lang="console"><span class="gp">$ </span><span class="nv">AWS_PROFILE</span><span class="o">=</span>personal<span class="w"> </span>lektor<span class="w"> </span>deploy<span class="sb">`</span>
|
||||
</pre>
|
||||
<h2>Configuration</h2>
|
||||
<p>You can specify headers to be attached to particular files when uploading them
|
||||
|
@ -208,24 +208,24 @@ their values. A list of valid headers is defined in the boto documentation as
|
|||
<a href="https://boto3.readthedocs.io/en/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS" rel="nofollow"><code>ALLOWED_UPLOAD_ARGS</code></a>.</p>
|
||||
<p>Defaults can be defined via the usual INI file way, in a <code>[DEFAULTS]</code> section.</p>
|
||||
<p>For example, your configuration file might look like this:</p>
|
||||
<pre lang="ini"><span class="k">[DEFAULT]</span><span class="w"></span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=3600</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[DEFAULT]</span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=3600</span>
|
||||
|
||||
<span class="k">[static files]</span><span class="w"></span>
|
||||
<span class="na">match</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">\.(css|js|woff|woff2)$</span><span class="w"></span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=31536000</span><span class="w"></span>
|
||||
<span class="k">[static files]</span>
|
||||
<span class="na">match</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">\.(css|js|woff|woff2)$</span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=31536000</span>
|
||||
|
||||
<span class="k">[media]</span><span class="w"></span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">jpg,jpeg,png,mp4</span><span class="w"></span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=259200</span><span class="w"></span>
|
||||
<span class="k">[media]</span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">jpg,jpeg,png,mp4</span>
|
||||
<span class="na">CacheControl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">public,max-age=259200</span>
|
||||
|
||||
<span class="k">[fonts]</span><span class="w"></span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">woff2</span><span class="w"></span>
|
||||
<span class="na">ContentType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">application/font-woff2</span><span class="w"></span>
|
||||
<span class="k">[fonts]</span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">woff2</span>
|
||||
<span class="na">ContentType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">application/font-woff2</span>
|
||||
|
||||
<span class="k">[documents]</span><span class="w"></span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">html,txt</span><span class="w"></span>
|
||||
<span class="na">ContentLanguage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en</span><span class="w"></span>
|
||||
<span class="k">[documents]</span>
|
||||
<span class="na">extensions</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">html,txt</span>
|
||||
<span class="na">ContentLanguage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">en</span>
|
||||
</pre>
|
||||
<h2>Contributing</h2>
|
||||
<p>Pull requests are super useful and encouraged! Once accepted, changes
|
||||
|
|
|
@ -151,26 +151,26 @@
|
|||
</ul>
|
||||
<h2>Installation</h2>
|
||||
<p>You can install the plugin with Lektor's installer:</p>
|
||||
<pre lang="bash">lektor plugins add lektor-scss
|
||||
<pre lang="bash">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-scss
|
||||
</pre>
|
||||
<p>Or by hand, adding the plugin to the packages section in your lektorproject file:</p>
|
||||
<pre lang="ini"><span class="k">[packages]</span><span class="w"></span>
|
||||
<span class="na">lektor-scss</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.4.1</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[packages]</span>
|
||||
<span class="na">lektor-scss</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.4.1</span>
|
||||
</pre>
|
||||
<h2>Usage</h2>
|
||||
<p>To enable the plugin, pass the <code>scss</code> flag when starting the development
|
||||
server or when running a build:</p>
|
||||
<pre lang="bash"><span class="c1"># build and compile css from scss</span>
|
||||
lektor build -f scss
|
||||
lektor<span class="w"> </span>build<span class="w"> </span>-f<span class="w"> </span>scss
|
||||
|
||||
<span class="c1"># edit site with new generated css</span>
|
||||
lektor server -f scss
|
||||
lektor<span class="w"> </span>server<span class="w"> </span>-f<span class="w"> </span>scss
|
||||
</pre>
|
||||
<h2>Python3</h2>
|
||||
<p>It is highly recommended to use this plugin with a python3 version of lektor.</p>
|
||||
<p>Since lektor can be used as a python module it is possible to enforce this <em>(after lektor is installed eg. with <code>pip3 install --user --upgrade lektor</code>)</em> with the following command:</p>
|
||||
<pre lang="bash"><span class="c1"># run a python3 lektor server with new generated css</span>
|
||||
python3 -m lektor server -f scss
|
||||
python3<span class="w"> </span>-m<span class="w"> </span>lektor<span class="w"> </span>server<span class="w"> </span>-f<span class="w"> </span>scss
|
||||
</pre>
|
||||
<h2>Configuration</h2>
|
||||
<p>The Plugin has the following settings you can adjust to your needs:</p>
|
||||
|
|
|
@ -146,19 +146,19 @@
|
|||
compiling them as part of the build process. It only rebuilds when it's needed (file changed, a file it imports changed or the config changed). When starting the the development server it watchs the files for changes in the background and rebuilds them when needed.</p>
|
||||
<h2>Installing</h2>
|
||||
<p>You can install the plugin with Lektor's installer::</p>
|
||||
<pre lang="bash">lektor plugins add lektor-scsscompile
|
||||
<pre lang="bash">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-scsscompile
|
||||
</pre>
|
||||
<p>Or by hand, adding the plugin to the packages section in your lektorproject file::</p>
|
||||
<pre lang="bash"><span class="o">[</span>packages<span class="o">]</span>
|
||||
lektor-scsscompile <span class="o">=</span> <span class="m">1</span>.3.0
|
||||
lektor-scsscompile<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>.3.0
|
||||
</pre>
|
||||
<h2>Usage</h2>
|
||||
<h5></h5>
|
||||
<p>To enable scsscompile, pass the <code>scsscompile</code> flag when starting the development
|
||||
server or when running a build::</p>
|
||||
<pre lang="bash">lektor build -f scsscompile
|
||||
<pre lang="bash">lektor<span class="w"> </span>build<span class="w"> </span>-f<span class="w"> </span>scsscompile
|
||||
</pre>
|
||||
<pre lang="bash">lektor build -f scsscompile
|
||||
<pre lang="bash">lektor<span class="w"> </span>build<span class="w"> </span>-f<span class="w"> </span>scsscompile
|
||||
</pre>
|
||||
<p>The Plugin has the following settings you can adjust to your needs:</p>
|
||||
<table>
|
||||
|
|
|
@ -131,8 +131,8 @@
|
|||
<p>This is a simple Lektor plugin that creates a template filter to remove HTML tags from a string. The use it was created for was to do processing on HTML outputted from a Markdown content field. The Markdown is rendered into HTML, and this filter can turn that into simple text, which was then passed to the <a href="https://github.com/terminal-labs/lektor-natural-language" rel="nofollow">lektor-natural-language</a> filters to get keywords, unsullied by things like <code><div></code> tags.</p>
|
||||
<p>Example usage:</p>
|
||||
<p><code>{{ this.body|striphtmltags }}</code></p>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">set</span> <span class="nv">var</span> <span class="o">=</span> <span class="s1">'<p><strong>Hello</strong>World!</p>'</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{{</span> <span class="nv">var</span><span class="o">|</span><span class="nf">striphtmltags</span> <span class="cp">}}</span><span class="x"></span>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">set</span> <span class="nv">var</span> <span class="o">=</span> <span class="s1">'<p><strong>Hello</strong>World!</p>'</span> <span class="cp">%}</span>
|
||||
<span class="cp">{{</span> <span class="nv">var</span><span class="o">|</span><span class="nf">striphtmltags</span> <span class="cp">}}</span>
|
||||
</pre>
|
||||
<p>The last example will render as "Hello World!"</p>
|
||||
|
||||
|
|
|
@ -136,12 +136,12 @@
|
|||
<p>See <a href="https://www.getlektor.com/docs/plugins/" rel="nofollow">the Lektor documentation for more instructions on installing plugins</a>.</p>
|
||||
<h2>Configuration</h2>
|
||||
<p>Configure Surge in your <code>.lektorproject</code> file:</p>
|
||||
<pre lang="ini"><span class="k">[servers.surge]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">surge:my-domain.com</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.surge]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">surge:my-domain.com</span>
|
||||
</pre>
|
||||
<p>To force all traffic to HTTPS, update your <code>.lektorproject</code> file:</p>
|
||||
<pre lang="ini"><span class="k">[servers.surge]</span><span class="w"></span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">surge+https:my-domain.com</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[servers.surge]</span>
|
||||
<span class="na">target</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">surge+https:my-domain.com</span>
|
||||
</pre>
|
||||
<p>For more information, see the <a href="https://surge.sh/help/using-https-by-default" rel="nofollow">Surge guide to HTTPS</a>.</p>
|
||||
<h2>Deployment</h2>
|
||||
|
|
|
@ -151,16 +151,16 @@ tea
|
|||
<p>Each page can list all the posts with that tag.</p>
|
||||
<h2>Installation</h2>
|
||||
<p>Add lektor-tags to your project from command line:</p>
|
||||
<pre lang="shell">lektor plugins add lektor-tags
|
||||
<pre lang="shell">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-tags
|
||||
</pre>
|
||||
<p>See <a href="https://www.getlektor.com/docs/plugins/" rel="nofollow">the Lektor documentation for more instructions on installing plugins</a>.</p>
|
||||
<h2>Overview</h2>
|
||||
<p>Say you have a "blog-post" model like this:</p>
|
||||
<pre lang="ini"><span class="k">[model]</span><span class="w"></span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog Post</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[model]</span>
|
||||
<span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Blog Post</span>
|
||||
|
||||
<span class="k">[fields.tags]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span><span class="w"></span>
|
||||
<span class="k">[fields.tags]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span>
|
||||
</pre>
|
||||
<p>Make a <code>blog-post.html</code> template that includes:</p>
|
||||
<pre lang="html">{% if this.tags %}
|
||||
|
@ -189,33 +189,33 @@ tea
|
|||
<p>Set these options in <code>configs/tags.ini</code>:</p>
|
||||
<h3><code>parent</code></h3>
|
||||
<p>Required. The source path of the tag pages' parent page. For example:</p>
|
||||
<pre lang="ini"><span class="na">parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/blog</span>
|
||||
</pre>
|
||||
<p>Then tag pages' source paths are like:</p>
|
||||
<pre><code>/blog/tag/my-tag
|
||||
</code></pre>
|
||||
<p>You can specify the root as the parent:</p>
|
||||
<pre lang="ini"><span class="na">parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/</span>
|
||||
</pre>
|
||||
<h3><code>items</code></h3>
|
||||
<p>A query for all items on the page for one tag. You can use the variables <code>site</code> and <code>tag</code>. The template's <code>this</code> variable has a <code>parent</code> attribute. The default query is:</p>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.children.filter(F.tags.contains(tag))</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.children.filter(F.tags.contains(tag))</span>
|
||||
</pre>
|
||||
<p>You can sort and filter with any expression:</p>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.children.filter(F.tags.contains(tag) and F.status == 'published').order_by('-pub_date')</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.children.filter(F.tags.contains(tag) and F.status == 'published').order_by('-pub_date')</span>
|
||||
</pre>
|
||||
<p>If the parent page has <a href="https://www.getlektor.com/docs/guides/pagination/" rel="nofollow">a pagination query</a> you may want to use it for tagged pages:</p>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.pagination.items.filter(F.tags.contains(tag))</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">items</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">this.parent.pagination.items.filter(F.tags.contains(tag))</span>
|
||||
</pre>
|
||||
<p>See <a href="https://www.getlektor.com/docs/api/db/query/" rel="nofollow">the Lektor documentation for queries</a>.</p>
|
||||
<h3><code>tags_field</code></h3>
|
||||
<p>The name of the field in your model that contains tags. Defaults to <code>tags</code>. The field should be of type <code>strings</code>. See <a href="https://www.getlektor.com/docs/api/db/types/strings/" rel="nofollow">the Lektor documentation for the <code>strings</code> type</a>.</p>
|
||||
<p>For example, if your model is like:</p>
|
||||
<pre lang="ini"><span class="k">[fields.labels]</span><span class="w"></span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="k">[fields.labels]</span>
|
||||
<span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">strings</span>
|
||||
</pre>
|
||||
<p>Then add this to <code>tags.ini</code>:</p>
|
||||
<pre lang="ini"><span class="na">tags_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">labels</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">labels</span>
|
||||
</pre>
|
||||
<h3><code>template</code></h3>
|
||||
<p>The template for the page that lists all posts with a certain tag. The template's <code>this</code> variable has attributes <code>tag</code> and <code>items</code>. An example template:</p>
|
||||
|
@ -230,17 +230,17 @@ tea
|
|||
<span class="p"></</span><span class="nt">ul</span><span class="p">></span>
|
||||
</pre>
|
||||
<p>Save a file like this to your project's <code>templates/tags.html</code>. If you name the file something different, like <code>label.html</code>, add this line to <code>tags.ini</code>:</p>
|
||||
<pre lang="ini"><span class="na">template</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">label.html</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">template</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">label.html</span>
|
||||
</pre>
|
||||
<p>The plugin provides a default template if you don't specify one.</p>
|
||||
<h3><code>url_path</code></h3>
|
||||
<p>An expression for the location of each tag page. You can use the variables <code>site</code> and <code>tag</code>. The <code>this</code> variable is a page with attributes <code>parent</code> and <code>items</code>. The default expression is:</p>
|
||||
<pre lang="ini"><span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.parent.url_path }}tag/{{ tag }}</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">url_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">{{ this.parent.url_path }}tag/{{ tag }}</span>
|
||||
</pre>
|
||||
<p>This expression generates URLs like <code>/blog/tag/coffee</code>.</p>
|
||||
<h3><code>ignore_missing</code></h3>
|
||||
<p>Default false. To set true, add this line to <code>tags.ini</code>:</p>
|
||||
<pre lang="ini"><span class="na">ignore_missing</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">ignore_missing</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span>
|
||||
</pre>
|
||||
<p>This allows URLs to missing tag pages to be silently replaced with "". The example use case is if your <code>blog-post.html</code> template includes a statement like:</p>
|
||||
<pre lang="html">{% for t in this.tags -%}
|
||||
|
@ -250,19 +250,19 @@ tea
|
|||
<p>If a blog post <em>draft</em> is not discoverable, and it has any new tags used by no published blog posts, then those tag pages do not yet exist. Turn on <code>ignore_missing</code> to allow such drafts to be built. The tag-page URL path will be the empty string "", until the draft is published and the tag page is created.</p>
|
||||
<h3><code>tags</code></h3>
|
||||
<p>Advanced configuration. An expression for the set of tags. Note that this expression is also useful in a template to get a list of all tags. The default expression is:</p>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.distinct("tags")</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.distinct("tags")</span>
|
||||
</pre>
|
||||
<p>If you set <code>tags_field</code> to a different field name than "tags", the default expression uses your custom field name. For example if you have this line in <code>tags.ini</code>:</p>
|
||||
<pre lang="ini"><span class="na">tags_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">labels</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags_field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">labels</span>
|
||||
</pre>
|
||||
<p>Then the default value of <code>tags</code> is:</p>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.distinct("labels")</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.distinct("labels")</span>
|
||||
</pre>
|
||||
<p>You can use any template expression. For example, if your items have a "published" boolean field, you can select tags of published items:</p>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.filter(F.published).distinct("tags")</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">parent.children.filter(F.published).distinct("tags")</span>
|
||||
</pre>
|
||||
<p>Or even list your tags manually:</p>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">["tag1", "tag2"]</span><span class="w"></span>
|
||||
<pre lang="ini"><span class="na">tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">["tag1", "tag2"]</span>
|
||||
</pre>
|
||||
<p>See <a href="https://www.getlektor.com/docs/api/db/query/" rel="nofollow">the Lektor documentation for queries</a>.</p>
|
||||
<p>Tags are always deduplicated. Tags are sorted in the order listed in the contents.lr / admin, allowing you to control their order manually. Since <code>{{ tags }}</code> simply returns a list, you can always apply any Jinja2 filter on that list such as sort, slice, or rejectattr.</p>
|
||||
|
@ -280,9 +280,9 @@ tea
|
|||
<p>This is the basic weight, used as a base for the following tags.</p>
|
||||
<h4>Example: Tags (with tag count) sorted by tag count (most used first)</h4>
|
||||
<pre lang="jinja"><span class="x"><ul></span>
|
||||
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="o">(</span><span class="nv">tagweights</span><span class="o">()</span> <span class="o">|</span> <span class="nf">dictsort</span><span class="o">(</span><span class="nv">by</span><span class="o">=</span><span class="s1">'value'</span><span class="o">,</span> <span class="nv">reverse</span><span class="o">=</span><span class="kp">true</span><span class="o">))</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="o">(</span><span class="nv">tagweights</span><span class="o">()</span> <span class="o">|</span> <span class="nf">dictsort</span><span class="o">(</span><span class="nv">by</span><span class="o">=</span><span class="s1">'value'</span><span class="o">,</span> <span class="nv">reverse</span><span class="o">=</span><span class="kp">true</span><span class="o">))</span> <span class="cp">%}</span>
|
||||
<span class="x"> <li></span><span class="cp">{{</span> <span class="nv">tag</span> <span class="cp">}}</span><span class="x"> (</span><span class="cp">{{</span> <span class="nv">weight.count</span> <span class="cp">}}</span><span class="x"> articles).</li></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
<span class="x"></ul></span>
|
||||
</pre>
|
||||
<h3><code>linear</code> — Tags are mapped with a number between <code>lower</code> and <code>upper</code>.</h3>
|
||||
|
@ -295,14 +295,14 @@ tea
|
|||
<p>Mapping is done using a linear function over the logarithm of tag counts.</p>
|
||||
<p>The result is a float: you might want to convert them to integers first (see example).</p>
|
||||
<h4>Example: Most used tag is twice as big as least used tag</h4>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="nv">tagweights</span><span class="o">()|</span><span class="nf">dictsort</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="nv">tagweights</span><span class="o">()|</span><span class="nf">dictsort</span> <span class="cp">%}</span>
|
||||
<span class="x"><a</span>
|
||||
<span class="x"> href="</span><span class="cp">{{</span> <span class="o">(</span><span class="s1">'/blog@tag/'</span> <span class="o">~</span> <span class="nv">tag</span><span class="o">)|</span><span class="nf">url</span> <span class="cp">}}</span><span class="x">"</span>
|
||||
<span class="x"> style="font-size: </span><span class="cp">{{</span> <span class="nv">weight.log</span><span class="o">(</span><span class="m">100</span><span class="o">,</span> <span class="m">200</span><span class="o">)|</span><span class="nf">round</span><span class="o">|</span><span class="nf">int</span> <span class="cp">}}</span><span class="x">%;"</span>
|
||||
<span class="x"> ></span>
|
||||
<span class="x"> </span><span class="cp">{{</span> <span class="nv">tag</span> <span class="cp">}}</span><span class="x"></span>
|
||||
<span class="x"> </span><span class="cp">{{</span> <span class="nv">tag</span> <span class="cp">}}</span>
|
||||
<span class="x"> </a></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
</pre>
|
||||
<h3><code>lineargroup</code> — Map each tag with an item of the list given in argument</h3>
|
||||
<p>The less used tag is mapped with the first item, the most used tag is mapped with the last item.</p>
|
||||
|
@ -312,14 +312,14 @@ tea
|
|||
<p>The less used tag is mapped with the first item, the most used tag is mapped with the last item.</p>
|
||||
<p>Mapping is done using a linear function over the logarithm of tag counts.</p>
|
||||
<h4>Example: Tags are given CSS classes <code>tagcloud-tiny</code>, <code>tagcloud-small</code>, etc.</h4>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="nv">tagweights</span><span class="o">()|</span><span class="nf">dictsort</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<pre lang="jinja"><span class="cp">{%</span> <span class="k">for</span> <span class="nv">tag</span><span class="o">,</span> <span class="nv">weight</span> <span class="k">in</span> <span class="nv">tagweights</span><span class="o">()|</span><span class="nf">dictsort</span> <span class="cp">%}</span>
|
||||
<span class="x"><a</span>
|
||||
<span class="x"> href="</span><span class="cp">{{</span> <span class="o">(</span><span class="s1">'/blog@tag/'</span> <span class="o">~</span> <span class="nv">tag</span><span class="o">)|</span><span class="nf">url</span> <span class="cp">}}</span><span class="x">"</span>
|
||||
<span class="x"> class="tagcloud-</span><span class="cp">{{</span> <span class="nv">weight.loggroup</span><span class="o">([</span><span class="s2">"tiny"</span><span class="o">,</span> <span class="s2">"small"</span><span class="o">,</span> <span class="s2">"normal"</span><span class="o">,</span> <span class="s2">"big"</span><span class="o">,</span> <span class="s2">"large"</span><span class="o">])</span> <span class="cp">}}</span><span class="x">"</span>
|
||||
<span class="x"> ></span>
|
||||
<span class="x"> </span><span class="cp">{{</span> <span class="nv">tag</span> <span class="cp">}}</span><span class="x"></span>
|
||||
<span class="x"> </span><span class="cp">{{</span> <span class="nv">tag</span> <span class="cp">}}</span>
|
||||
<span class="x"> </a></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x"></span>
|
||||
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span>
|
||||
</pre>
|
||||
|
||||
|
||||
|
|
|
@ -136,34 +136,34 @@
|
|||
<ol>
|
||||
<li>
|
||||
<p>Add plugin to your project</p>
|
||||
<pre lang="bash">$ lektor plugin add lektor-tailwind
|
||||
$ lektor plugin list
|
||||
<pre lang="bash">$<span class="w"> </span>lektor<span class="w"> </span>plugin<span class="w"> </span>add<span class="w"> </span>lektor-tailwind
|
||||
$<span class="w"> </span>lektor<span class="w"> </span>plugin<span class="w"> </span>list
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Configure your template paths</p>
|
||||
<p>In <code>tailwindcss.config.js</code>:</p>
|
||||
<pre lang="javascript"><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">content</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'./templates/**/*.{html,j2}'</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">theme</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">extend</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[],</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<pre lang="javascript"><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">content</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'./templates/**/*.{html,j2}'</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nx">theme</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">extend</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Add the Tailwind directives to your CSS</p>
|
||||
<p>In <code>assets/static/style.css</code>:</p>
|
||||
<pre lang="css"><span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">base</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">components</span><span class="p">;</span><span class="w"></span>
|
||||
<span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">utilities</span><span class="p">;</span><span class="w"></span>
|
||||
<pre lang="css"><span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">base</span><span class="p">;</span>
|
||||
<span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">components</span><span class="p">;</span>
|
||||
<span class="p">@</span><span class="k">tailwind</span><span class="w"> </span><span class="nt">utilities</span><span class="p">;</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Start lektor build or server:</p>
|
||||
<pre lang="bash">$ lektor build
|
||||
$ lektor server
|
||||
<pre lang="bash">$<span class="w"> </span>lektor<span class="w"> </span>build
|
||||
$<span class="w"> </span>lektor<span class="w"> </span>server
|
||||
</pre>
|
||||
</li>
|
||||
</ol>
|
||||
|
|
|
@ -138,47 +138,47 @@
|
|||
These files will then be copied over to Lektors templates folder so that they can be used by Lektor.
|
||||
This plugin depends on the <a href="https://github.com/lektor/lektor-webpack-support" rel="nofollow">lektor-webpack-support</a> plugin to be really useful.</p>
|
||||
<h1>webpack/webpack.config.js</h1>
|
||||
<pre lang="js"><span class="kd">const</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"path"</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"mini-css-extract-plugin"</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">HtmlWebpackPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"html-webpack-plugin"</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">CleanWebpackPlugin</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"clean-webpack-plugin"</span><span class="p">);</span><span class="w"></span>
|
||||
<pre lang="js"><span class="kd">const</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"path"</span><span class="p">);</span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"mini-css-extract-plugin"</span><span class="p">);</span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">HtmlWebpackPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"html-webpack-plugin"</span><span class="p">);</span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">CleanWebpackPlugin</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"clean-webpack-plugin"</span><span class="p">);</span>
|
||||
|
||||
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">"production"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">main</span><span class="o">:</span><span class="w"> </span><span class="s2">"./src/index.js"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].bundle.js"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">"production"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">main</span><span class="o">:</span><span class="w"> </span><span class="s2">"./src/index.js"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].bundle.js"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">path</span><span class="o">:</span><span class="w"> </span><span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">"/assets/generated"</span><span class="w"> </span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">optimization</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">minimizer</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">HtmlWebpackPlugin</span><span class="p">({</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">inject</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"layout_generated.html"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">template</span><span class="o">:</span><span class="w"> </span><span class="s2">"./src/layout_template.html"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">})</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">CleanWebpackPlugin</span><span class="p">(),</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">({</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].css"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">})</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="s2">"css-loader"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="s2">"sass-loader"</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">}]</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">optimization</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">minimizer</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">HtmlWebpackPlugin</span><span class="p">({</span>
|
||||
<span class="w"> </span><span class="nx">inject</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"layout_generated.html"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">template</span><span class="o">:</span><span class="w"> </span><span class="s2">"./src/layout_template.html"</span>
|
||||
<span class="w"> </span><span class="p">})</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">CleanWebpackPlugin</span><span class="p">(),</span>
|
||||
<span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">({</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].css"</span>
|
||||
<span class="w"> </span><span class="p">})</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[{</span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"css-loader"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"sass-loader"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">}]</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<h1>webpack/src/layout_template.html</h1>
|
||||
<pre lang="html"><span class="cp"><!DOCTYPE html></span>
|
||||
|
|
|
@ -153,7 +153,7 @@ the <code>-f webpack</code> flag.</p>
|
|||
<h2>Enabling the Plugin</h2>
|
||||
<p>To enable the plugin add this to your project file, run this command while
|
||||
sitting in your Lektor project directory:</p>
|
||||
<pre lang="bash">lektor plugins add lektor-webpack-support
|
||||
<pre lang="bash">lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-webpack-support
|
||||
</pre>
|
||||
<h2>Creating a Webpack Project</h2>
|
||||
<p>Next you need to create a webpack project. Create a <code>webpack/</code> folder and
|
||||
|
@ -162,11 +162,11 @@ inside that folder create <code>package.json</code> and a <code>webpack.config.j
|
|||
<p>This file instructs <code>npm</code> which packages we will need. All we need for a
|
||||
start is to create an almost empty file (name and version fields are mandatory
|
||||
but not important for functionality, change them to suit your own needs):</p>
|
||||
<pre lang="json"><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"lektor-webpack"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.0.0"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nt">"private"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
|
||||
<span class="p">}</span><span class="w"></span>
|
||||
<pre lang="json"><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"lektor-webpack"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.0.0"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"private"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<p>Now we can <code>npm install</code> (or <code>yarn add</code>) the rest:</p>
|
||||
<pre><code>$ cd </path/to/your/lektor/project>/webpack
|
||||
|
@ -182,43 +182,43 @@ setup that's good enough to cover most things you will encounter. The
|
|||
idea is to build the files from <code>webpack/scss</code> and <code>webpack/js</code> into
|
||||
<code>assets/static/gen</code> so that we can use it even if we do not have webpack
|
||||
installed for as long as someone else ran it before.</p>
|
||||
<pre lang="javascript"><span class="kd">const</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"path"</span><span class="p">);</span><span class="w"></span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"mini-css-extract-plugin"</span><span class="p">);</span><span class="w"></span>
|
||||
<pre lang="javascript"><span class="kd">const</span><span class="w"> </span><span class="nx">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"path"</span><span class="p">);</span>
|
||||
<span class="kd">const</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s2">"mini-css-extract-plugin"</span><span class="p">);</span>
|
||||
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">app</span><span class="o">:</span><span class="w"> </span><span class="s2">"./js/main.js"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">styles</span><span class="o">:</span><span class="w"> </span><span class="s2">"./scss/main.scss"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">path</span><span class="o">:</span><span class="w"> </span><span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">),</span><span class="w"> </span><span class="s2">"assets"</span><span class="p">,</span><span class="w"> </span><span class="s2">"static"</span><span class="p">,</span><span class="w"> </span><span class="s2">"gen"</span><span class="p">),</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].js"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">devtool</span><span class="o">:</span><span class="w"> </span><span class="s2">"source-map"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">"production"</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.js$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">exclude</span><span class="o">:</span><span class="w"> </span><span class="sr">/node_modules/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"babel-loader"</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span><span class="w"> </span><span class="s2">"css-loader"</span><span class="p">,</span><span class="w"> </span><span class="s2">"sass-loader"</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.css$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span><span class="w"> </span><span class="s2">"css-loader"</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.(woff2?|ttf|eot|svg|png|jpe?g|gif)$/</span><span class="p">,</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"file"</span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">],</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="ow">new</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">({</span><span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"styles.css"</span><span class="w"> </span><span class="p">})],</span><span class="w"></span>
|
||||
<span class="p">};</span><span class="w"></span>
|
||||
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">entry</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">app</span><span class="o">:</span><span class="w"> </span><span class="s2">"./js/main.js"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">styles</span><span class="o">:</span><span class="w"> </span><span class="s2">"./scss/main.scss"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">output</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">path</span><span class="o">:</span><span class="w"> </span><span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">),</span><span class="w"> </span><span class="s2">"assets"</span><span class="p">,</span><span class="w"> </span><span class="s2">"static"</span><span class="p">,</span><span class="w"> </span><span class="s2">"gen"</span><span class="p">),</span>
|
||||
<span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"[name].js"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">devtool</span><span class="o">:</span><span class="w"> </span><span class="s2">"source-map"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">"production"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">module</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">rules</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.js$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">exclude</span><span class="o">:</span><span class="w"> </span><span class="sr">/node_modules/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"babel-loader"</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.scss$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span><span class="w"> </span><span class="s2">"css-loader"</span><span class="p">,</span><span class="w"> </span><span class="s2">"sass-loader"</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.css$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">MiniCssExtractPlugin</span><span class="p">.</span><span class="nx">loader</span><span class="p">,</span><span class="w"> </span><span class="s2">"css-loader"</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nx">test</span><span class="o">:</span><span class="w"> </span><span class="sr">/\.(woff2?|ttf|eot|svg|png|jpe?g|gif)$/</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nx">use</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"file"</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="ow">new</span><span class="w"> </span><span class="nx">MiniCssExtractPlugin</span><span class="p">({</span><span class="w"> </span><span class="nx">filename</span><span class="o">:</span><span class="w"> </span><span class="s2">"styles.css"</span><span class="w"> </span><span class="p">})],</span>
|
||||
<span class="p">};</span>
|
||||
</pre>
|
||||
<h2>Creating the App</h2>
|
||||
<p>Now we can start building our app. We configured at least two files
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
to <a href="https://www.getlektor.com" rel="nofollow">Lektor CMS</a></p>
|
||||
<section id="enabling-the-plugin">
|
||||
<h2>Enabling the Plugin</h2>
|
||||
<pre><code>lektor plugins add lektor-yandex-metrica</code></pre>
|
||||
<pre><code>lektor<span class="w"> </span>plugins<span class="w"> </span>add<span class="w"> </span>lektor-yandex-metrica</code></pre>
|
||||
</section>
|
||||
<section id="configuring-the-plugin">
|
||||
<h2>Configuring the Plugin</h2>
|
||||
|
|
Loading…
Reference in New Issue