diff --git a/docs/js/cards.js b/docs/js/cards.js new file mode 100644 index 00000000..f8b3d69b --- /dev/null +++ b/docs/js/cards.js @@ -0,0 +1,21 @@ +$(function() { + let version_path_index = 4; + $('.card-wrapper > div > a').each(function() { + let destUrl = $(this).attr('href'); + if ('//' === destUrl.substring(0, 2)) { + destUrl = document.location.protocol + destUrl; + } else if ('/' === destUrl.substring(0, 1)) { + destUrl = document.location.protocol + '//' + document.location.host + destUrl; + } + destUrl = new URL(destUrl); + if (destUrl.host === document.location.host) { + let destPath = destUrl.pathname.split('/'), + srcPath = document.location.pathname.split('/'); + if (destPath[version_path_index] !== srcPath[version_path_index]) { + destPath[version_path_index] = srcPath[version_path_index]; + } + destUrl.pathname = destPath.join('/'); + $(this).attr('href', destUrl.pathname); + } + }); +}); diff --git a/main.py b/main.py index 790b5559..b0ec0c4f 100644 --- a/main.py +++ b/main.py @@ -45,9 +45,8 @@ def include_file(filename, start_line=0, end_line=None, glue=''): def cards(pages, columns=1, style="cards", force_version=False): current_page = env.variables.page absolute_url = current_page.abs_url - canonical = current_page.canonical_url - url_parts = re.search("//([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/", canonical) - (site, project, edition, language, version) = url_parts.groups() + url_parts = re.search("^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/", absolute_url) + (project, edition, language, version) = url_parts.groups() version = force_version or version if isinstance(pages, str): @@ -73,8 +72,6 @@ def cards(pages, columns=1, style="cards", force_version=False): cards.append( CARDS_TEMPLATE % ( '/'.join(( - '', - site, project, edition, language, @@ -83,7 +80,6 @@ def cards(pages, columns=1, style="cards", force_version=False): )), doc_meta['short'] or doc_meta['title'], doc_meta['description'] or " " - # site_url ) ) diff --git a/mkdocs.yml b/mkdocs.yml index 527ce7d0..6cefcc53 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -214,6 +214,7 @@ extra_javascript: - js/jquery-ui.min.js - js/custom.js - js/docs.switcher.js + - js/cards.js - '//cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js' markdown_extensions: