Merge pull request #338 from dairiki/feature.lektor-pr992
Documentation updates for lektor/lektor#992
This commit is contained in:
commit
6f3d75186e
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -4,16 +4,32 @@ summary: Generates a URL relative to another path.
|
||||||
---
|
---
|
||||||
type: method
|
type: method
|
||||||
---
|
---
|
||||||
signature: path, alt=None, absolute=None, external=None
|
signature: path, alt=None, absolute=None, external=None, base_url=None, resolve=None, strict_resolve=None
|
||||||
---
|
---
|
||||||
body:
|
body:
|
||||||
|
|
||||||
Calculates the URL from the current source object to the given other source
|
Calculates the URL from the current source object to the given other source
|
||||||
object. Alternatively a path can also be provided instead of a source object.
|
object. Alternatively, a path can also be provided instead of a source object.
|
||||||
If the path starts with a leading bang (``!``) then no resolving is performed.
|
|
||||||
|
This is what the [`|url` filter](../../../templates/filters/url/) uses
|
||||||
|
internally to generate URLs.
|
||||||
|
|
||||||
|
If `resolve` is not `False`, then (so long as `path` is not a URL
|
||||||
|
containing either a _scheme_ or a _netloc_) an attempt is made to
|
||||||
|
resolve `path` via the [Lektor database](../../) to a _source object_,
|
||||||
|
then the URL of that source object is used. If database-resolution of
|
||||||
|
the path fails, then the path is interpreted as a URL-path, or, if
|
||||||
|
`strict_resolve` is `True`, an error is raised.
|
||||||
|
|
||||||
|
If the path starts with a leading bang (``!``) then no resolving is
|
||||||
|
performed. This is equivalent to passing `resolve=False`.
|
||||||
|
|
||||||
|
An explicit value for `alt` may be specified via the `alt` parameter to `url_to`.
|
||||||
|
Alternatively, an `alt` query arg may be included in the `path` parameter.
|
||||||
|
For example, `src.url_to('/', alt='de')` is equivalent to `src.url_to('/?alt=de')` — both return the URL to the root of the site with `alt=de`.
|
||||||
|
|
||||||
If no `alt` is provided the `alt` of the page is used.
|
If no `alt` is provided the `alt` of the page is used.
|
||||||
|
|
||||||
This is what the `|url` filter uses internally to generate URLs.
|
|
||||||
|
|
||||||
In addition to that `absolute` can enforce the URL to be absolute instead of
|
In addition to that `absolute` can enforce the URL to be absolute instead of
|
||||||
relative to the current page and `external` can be used to also add the
|
relative to the current page and `external` can be used to also add the
|
||||||
|
|
|
@ -36,3 +36,45 @@ type = markdown
|
||||||
{{ this.body }}
|
{{ this.body }}
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Resolution of Links
|
||||||
|
|
||||||
|
The way in which links in Markdown fields are resolved to URLs can be
|
||||||
|
controlled using the `resolve_links` field option. There are three
|
||||||
|
possible values for the option:
|
||||||
|
|
||||||
|
- `resolve_links = never`
|
||||||
|
Never resolve links to Lektor source objects. This was the link
|
||||||
|
resolution behavior for all versions of Lektor before *FIXME*.
|
||||||
|
|
||||||
|
- `resolve_links = when-possible`
|
||||||
|
This is the new default behavior. When possible, links are resolved
|
||||||
|
to Lektor [source objects](../../obj/), then the URL to those
|
||||||
|
source objects is used. When the resolution to a source object
|
||||||
|
fails, the links are interpreted as URL paths.
|
||||||
|
|
||||||
|
- `resolve_links = always`
|
||||||
|
Resolve links to Lektor source objects, then use the URL of those
|
||||||
|
source objects. If that resolution fails, an error is raised.
|
||||||
|
|
||||||
|
The `resolve_links` option only applies to Markdown links that do not
|
||||||
|
include an explicit _scheme_ or _netloc_.
|
||||||
|
|
||||||
|
As an example, to force the old behavior, wherein links were never
|
||||||
|
resolved via the Lektor database, configure a `markdown` field like
|
||||||
|
so:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[fields.body]
|
||||||
|
label = Body
|
||||||
|
type = markdown
|
||||||
|
resolve_links = never
|
||||||
|
```
|
||||||
|
|
||||||
|
## Linking to a Specific Alt
|
||||||
|
|
||||||
|
When links are resolved through the Lektor database, URLs to specific _alt_s may be obtained by adding an `alt` query arg to the link.
|
||||||
|
For example, to link to the current page, but in the French alt:
|
||||||
|
```md
|
||||||
|
Here is the [French version of the blog](/blog?alt=fr).
|
||||||
|
```
|
||||||
|
|
|
@ -4,7 +4,7 @@ type: filter
|
||||||
---
|
---
|
||||||
summary: Generates a relative URL from the current page to another.
|
summary: Generates a relative URL from the current page to another.
|
||||||
---
|
---
|
||||||
signature: alt=None, absolute=None, external=None
|
signature: alt=None, absolute=None, external=None, resolve=None, strict_resolve=None
|
||||||
---
|
---
|
||||||
body:
|
body:
|
||||||
|
|
||||||
|
@ -19,10 +19,10 @@ as the final URLs. This is important when a page forcefully overrides the
|
||||||
URL path. In this case it could be that linking to `/project` for instance
|
URL path. In this case it could be that linking to `/project` for instance
|
||||||
would generate the URL `de/projekte/` if that's what's configured.
|
would generate the URL `de/projekte/` if that's what's configured.
|
||||||
|
|
||||||
If you want to override this behavior you can prefix the URL with `!` and
|
To override this behavior, pass `resolve=False` (or, alternatively,
|
||||||
no resolving will take place.
|
prefix the URL with `!`) and no resolving will take place.
|
||||||
|
|
||||||
Note that the URL filter always generates a relative URL. So for instance
|
Note that, by default, the URL filter always generates a relative URL. So for instance
|
||||||
if you are currently at `/info/about/` and you want to link to `/projects/`
|
if you are currently at `/info/about/` and you want to link to `/projects/`
|
||||||
it will generate a link in the form of `../../projects/`. This makes it
|
it will generate a link in the form of `../../projects/`. This makes it
|
||||||
possible to easily deploy the website to a folder outside of the root of
|
possible to easily deploy the website to a folder outside of the root of
|
||||||
|
@ -44,9 +44,17 @@ Same page to other alternative:
|
||||||
```
|
```
|
||||||
|
|
||||||
If you already know 100% where to link to, and you do not want any resolving
|
If you already know 100% where to link to, and you do not want any resolving
|
||||||
to take place, then you can prefix a path with `!`. For instance this always
|
to take place, then pass `resolve=False`. For instance this always
|
||||||
links to the root of the website:
|
links to the root of the website:
|
||||||
|
|
||||||
```html+jinja
|
```html+jinja
|
||||||
<a href="{{ '!/'|url }}">To Root</a>
|
<a href="{{ '/'|url(resolve=False) }}">To Root</a>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Details
|
||||||
|
|
||||||
|
Internally, this filter uses [SourceObject.url_to][url-to]. See the
|
||||||
|
[documentation for that method][url-to] to read more about the details
|
||||||
|
of that process.
|
||||||
|
|
||||||
|
[url-to]: ../../../db/obj/url-to/
|
||||||
|
|
|
@ -19,19 +19,31 @@
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro get_doc_link(page) -%}
|
{% macro get_doc_link(page) -%}
|
||||||
<a href="{{ page|url }}">{{ page.title }}{%
|
<a href="{{ page|url }}">
|
||||||
if page.type == 'function' or page.type == 'method' %}(){% endif %}</a>
|
{{- page.title -}}{% if page.type in ('function', 'method') %}(){% endif -%}
|
||||||
|
</a>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro get_doc_header(page) %}
|
{% macro get_doc_header(page) %}
|
||||||
{% if page.type %}
|
{% if page.type %}
|
||||||
<h1>{% if page.type %}{{ get_doc_icon(page) }} {% endif %}{%
|
<h1>
|
||||||
if page.module %}<code class="mod">{{ page.module }}.</code>{% endif
|
{%- if page.type %}{{ get_doc_icon(page) }} {% endif %}
|
||||||
%}<code class="obj">{{ page.title }}</code>{%
|
{%- if page.module %}<code class="mod">{{ page.module }}.</code>{% endif -%}
|
||||||
if (page.type == 'method' or page.type == 'function' or page.type == 'filter'
|
<code class="obj">{{ page.title }}</code>
|
||||||
or page.type == 'event') or page.signature
|
{%- if page.signature or page.type in ('method', 'function', 'filter', 'event') %}
|
||||||
%} <span class="sig">(<code>{{ page.signature }}</code>)</span>{% endif %}</h1>
|
<span class="sig">({{ format_signature(page.signature) }})</span>
|
||||||
|
{%- endif -%}
|
||||||
|
</h1>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h1>{{ page.title }}</h1>
|
<h1>{{ page.title }}</h1>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro format_signature(signature) -%}
|
||||||
|
{% if signature|trim -%}
|
||||||
|
{% set sep = joiner(" ") -%}
|
||||||
|
{% for param in signature.split(',')|map('trim') -%}
|
||||||
|
{{ sep() }}<code>{{ param }}{% if not loop.last %},{% endif %}</code>
|
||||||
|
{%- endfor -%}
|
||||||
|
{% endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
|
@ -221,6 +221,13 @@ div.blog-snippet {
|
||||||
div.doc-styling, div.blog-post, div.plugin {
|
div.doc-styling, div.blog-post, div.plugin {
|
||||||
line-height: 1.75;
|
line-height: 1.75;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-indent: -2em;
|
||||||
|
padding-left: 2em;
|
||||||
|
.glyphicon {
|
||||||
|
text-indent: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
a.ref {
|
a.ref {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue