Documentation for lektor/lektor#992
This commit is contained in:
parent
5874282667
commit
188e46d997
|
@ -4,16 +4,28 @@ 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`.
|
||||||
|
|
||||||
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,37 @@ 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
|
||||||
|
```
|
||||||
|
|
|
@ -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/
|
||||||
|
|
Loading…
Reference in New Issue