Skip to content

Commit 7ecc308

Browse files
committed
Fix MkDocs sitemap to not skip section index pages
Fixes #3
1 parent ca3af56 commit 7ecc308

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

mkdocs_section_index/rewrites.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ def get_source(self, environment: Environment, template: str) -> Tuple[str, str,
2323
old_src = src
2424
path = pathlib.Path(filename).as_posix()
2525

26-
if path.endswith("/material/partials/nav-item.html"):
26+
if path.endswith("/mkdocs/templates/sitemap.xml"):
27+
src = _transform_mkdocs_sitemap_template(src)
28+
elif path.endswith("/material/partials/nav-item.html"):
2729
src = _transform_material_nav_item_template(src)
2830
elif path.endswith("/material/partials/tabs-item.html"):
2931
src = _transform_material_tabs_item_template(src)
@@ -41,6 +43,13 @@ def get_source(self, environment: Environment, template: str) -> Tuple[str, str,
4143
return src, filename, uptodate
4244

4345

46+
def _transform_mkdocs_sitemap_template(src: str) -> str:
47+
return src.replace(
48+
"{%- else %}",
49+
"{%- endif %}{% if item.url %}",
50+
)
51+
52+
4453
def _transform_material_nav_item_template(src: str) -> str:
4554
src = src.replace(
4655
"{% if nav_item.children %}",
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# https://github.com/mkdocs/mkdocs/blob/cb85d48851133e6d482deb3405de67c3dbea82be/mkdocs/templates/sitemap.xml
2+
input: |
3+
{%- macro nav_item(item) -%}
4+
{%- if item.children -%}
5+
{%- for child in item.children -%}
6+
{{ nav_item(child) }}
7+
{%- endfor -%}
8+
{%- else %}
9+
{%- if not item.is_link -%}
10+
<url>
11+
<loc>{% if item.canonical_url %}{{ item.canonical_url|e }}{% else %}{{ item.abs_url|e }}{% endif %}</loc>
12+
{% if item.update_date %}<lastmod>{{item.update_date}}</lastmod>{% endif %}
13+
<changefreq>daily</changefreq>
14+
</url>
15+
{%- endif -%}
16+
{%- endif -%}
17+
{%- endmacro -%}
18+
19+
<?xml version="1.0" encoding="UTF-8"?>
20+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
21+
{%- for item in nav -%}
22+
{{ nav_item(item) }}
23+
{%- endfor %}
24+
</urlset>
25+
output: |
26+
{%- macro nav_item(item) -%}
27+
{%- if item.children -%}
28+
{%- for child in item.children -%}
29+
{{ nav_item(child) }}
30+
{%- endfor -%}
31+
{%- endif %}{% if item.url %}
32+
{%- if not item.is_link -%}
33+
<url>
34+
<loc>{% if item.canonical_url %}{{ item.canonical_url|e }}{% else %}{{ item.abs_url|e }}{% endif %}</loc>
35+
{% if item.update_date %}<lastmod>{{item.update_date}}</lastmod>{% endif %}
36+
<changefreq>daily</changefreq>
37+
</url>
38+
{%- endif -%}
39+
{%- endif -%}
40+
{%- endmacro -%}
41+
42+
<?xml version="1.0" encoding="UTF-8"?>
43+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
44+
{%- for item in nav -%}
45+
{{ nav_item(item) }}
46+
{%- endfor %}
47+
</urlset>

tests/test_rewrites.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
from mkdocs_section_index import rewrites
44

55

6+
@pytest.mark.golden_test("rewrites/mkdocs-sitemap-*.yml")
7+
def test_rewrite_mkdocs_sitemap(golden):
8+
assert rewrites._transform_mkdocs_sitemap_template(golden["input"]) == golden.out["output"]
9+
10+
611
@pytest.mark.golden_test("rewrites/readthedocs-base-*.yml")
712
def test_rewrite_readthedocs_base(golden):
813
assert rewrites._transform_readthedocs_base_template(golden["input"]) == golden.out["output"]

0 commit comments

Comments
 (0)