This package allows you to add links to other MkDocs sites (or sites created with similar page generator).
First install the PyPI package:
pip install mkdocs-crosslink-plugin
Add something like the following to your mkdocs.yml
:
plugins:
- search
- crosslink:
crosslinks:
- name: alpha
source_dir: site_a/docs
target_url: http://localhost:8000/site_a/
use_directory_urls: False
- name: "example"
source_dir: /var/www/html/example.com/
target_url: https://example.com/
use_directory_urls: True
Each crosslink has the following attributes:
name
: How you reference the site. By default the schema isx-NAME:FILE_NAME
(so for examplex-alpha:my-image.png
).source_dir
is the directory containing the Markdown files.target_url
is the path, where the site corresponding to thesource_dir
files are hosted.use_directory_urls
should correspond to the target site'suse_directory_urls
settings.- If enabled
path/index.md
will be mapped topath/
andpath/test.md
will be mapped topath/test/
. - If disabled
path/index.md
will be mapped topath/index.html
andpath/test.md
will be mapped topath/test.html
.
- If enabled
Starting with version 0.0.2 you can also define multiple crosslinks at once, by using a glob-like syntax.
Inject a *
character in the name
, source_dir
, and target_url
.
The plugin will then look for directories matching the source_dir
glob, create a crosslink for each one that was not defined before, and replace the *
in the name
and target_url
with the same value that it matched in the source_dir
value.
Starting with version 0.0.2 there is also a builtin local
crosslink, which can be used to reference files in the current site, similar to other autolink tools.
On your pages you can reference links and images to other sites with the x-SITE_NAME:FILE_NAME
syntax.
For example to load the image my-image.png
somewhere from the https://example.com/
(crosslink example
) you would use the syntax:
![My Image](x-example:my-image.png)
If multiple files with the exact same name exist, there is currently now way to reference the correct one.
In the future I plan to let you specify a part of the path to select the correct file.
From 0.0.2 on: For index files (index.md
or index.html
) you can reference them by the name of the parent's directory followed by a slash.
So /path/to/some/index.md
can be referenced as some/
.
In theory, this plugin should work side by side with other autolink plugins.
This is because the default schema x-NAME:
is basically a fake URL schema that any other plugins should not touch.
At the same time this plugin ignores normal links, which are processed by other autolink plugins.
Known problems exist with mkdocs-ezlinks-plugin because it expects custom URL schemas to be followed by //
(like x-NAME://
) as can be seen by the mailto:
issue.
You can work around this, by using links followed by a double slash and setting the correct suffix in the plugin settings:
plugins:
- search
- crosslink:
suffix: "://"
crosslinks:
- name: "site_a"
...
Some very basic tests are in docs
(main site), site_a
(crosslink alpha), and site_b
(crosslink bravo).
You can build and serve the test site by running ./build.sh
.
- Just some bug fixes
- Added builtin
local
crosslink - Reference
index.md
as<PARENT_DIR_NAME>/
- Added glob support for crosslinks
- Added profiling option (
show_profiling_results: True
)