2022-02-20 15:15:38 +01:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "ie=edge" >
2022-12-17 10:12:40 +01:00
< link rel = "stylesheet" href = "../../../../static/styles.css?h=dff0aaad" >
2022-02-20 15:15:38 +01:00
< link rel = "stylesheet" href = "../../../../static/pygments.css" >
< link rel = "shortcut icon" href = "../../../../static/favicon.png?h=fa09bedd" >
< title > join_path | Documentation | Lektor Static Content Management System< / title >
< / head >
< body class = "default" >
< nav class = "navbar navbar-inverse navbar-static-top" >
< div class = "container" >
< div class = "navbar-header" >
< button type = "button" class = "navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
< span class = "sr-only" > Toggle navigation< / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< / button >
< a class = "navbar-brand" href = "../../../../" > Lektor< / a >
< / div >
< div id = "navbar" class = "collapse navbar-collapse" >
< ul class = "nav navbar-nav" >
< li > < a href = "../../../../downloads/" > Download< / a > < / li >
< li class = "active" > < a href = "../../../" > Documentation< / a > < / li >
< li > < a href = "../../../../showcase/" > Showcase< / a > < / li >
< li > < a href = "../../../../plugins/" > Plugins< / a > < / li >
< li > < a href = "../../../../community/" > Community< / a > < / li >
< li > < a href = "../../../../blog/" > Blog< / a > < / li >
< / ul >
< / div >
< / div >
< / nav >
< div class = "body-wrapper" >
< div class = "container" >
< div class = "row" >
< div class = "col-sm-3" >
< ul class = "tree-nav nocontent" >
< li > < a href = "../../../" > Welcome< / a > < / li >
< li > < a href = "../../../what/" > What is Lektor< / a >
< li > < a href = "../../../installation/" > Installation< / a >
< li > < a href = "../../../quickstart/" > Quickstart< / a >
< li > < a href = "../../../project/" > Project< / a >
< li > < a href = "../../../content/" > Content< / a >
< li > < a href = "../../../templates/" > Templates< / a >
< li > < a href = "../../../themes/" > Themes< / a >
< li > < a href = "../../../guides/" > Guides< / a >
< li > < a href = "../../../deployment/" > Deployment< / a >
< li > < a href = "../../../plugins/" > Plugins< / a >
< li > < a href = "../../../models/" > Data Modelling< / a >
< li > < a href = "../../../cli/" > Command Line< / a >
< li > < a href = "../../" > API< / a >
< ul >
< li > < a href = "../../build/" > Build System< / a >
< li > < a href = "../../databags/" > Databags< / a >
< li > < a href = "../../db/" > Database< / a >
< li > < a href = "../../environment/" > Environment< / a >
< li > < a href = "../../plugins/" > Plugins< / a >
< li > < a href = "../../project/" > Project< / a >
< li > < a href = "../../publisher/" > Publisher< / a >
< li > < a href = "../../templates/" > Template API< / a >
< li > < a href = "../" > Utilities< / a >
< ul >
< li > < a href = "../build-url/" > build_url()< / a >
< li > < a href = "../get-structure-hash/" > get_structure_hash()< / a >
< li class = "active" > < a href = "./" > join_path()< / a >
< ul > < / ul >
< li > < a href = "../parse-path/" > parse_path()< / a >
< li > < a href = "../process-image/" > process_image()< / a >
< li > < a href = "../url-to/" > url_to()< / a >
< / ul >
< / ul >
< li > < a href = "../../../search/" > Search< / a >
< / ul >
< div class = "visible-md-block visible-lg-block" >
< h4 > This Page< / h4 >
< ul class = "toc" >
< li > < a href = "#example" > Example< / a > < / li >
< / ul >
< / div >
< / div >
< div class = "col-sm-9 doc-styling" >
2022-07-28 05:28:26 +02:00
< h1 > < i class = "glyphicon glyphicon-cog" > < / i > < code class = "mod" > lektor.utils.< / code > < code class = "obj" > join_path< / code >
< span class = "sig" > (< code > a,< / code > < code > b< / code > )< / span > < / h1 >
2022-02-20 15:15:38 +01:00
< ul class = page-meta >
< li > New in Lektor Version < em > 2.0< / em > < / li >
< / ul >
< p > Given two Lektor paths this joins them together with the rules that Lektor
set up for this. In particular this is important in the presence of
virtual paths which have their own join semantics.< / p >
2022-05-03 00:53:59 +02:00
< h2 id = "example" > Example< / h2 > < div class = "hll" > < pre > < span > < / span > < span class = "gp" > > > > < / span > < span class = "kn" > from< / span > < span class = "nn" > lektor.utils< / span > < span class = "kn" > import< / span > < span class = "n" > join_path< / span >
2022-02-20 15:15:38 +01:00
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' hello-world' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog/hello-world' < / span >
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' @archive' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog@archive' < / span >
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog@archive' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' 2015' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog@archive/2015' < / span >
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog@archive/2015' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ..' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog@archive' < / span >
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog@archive' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ..' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog' < / span >
< / pre > < / div >
< p > Special note should be taken for the numeric virtual path of paginations. It
is considered to be on the same level as the actual record:< / p >
2022-05-03 00:53:59 +02:00
< div class = "hll" > < pre > < span > < / span > < span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog@2' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ..' < / span > < span class = "p" > )< / span >
2022-02-20 15:15:38 +01:00
< span class = "go" > ' /' < / span >
< span class = "gp" > > > > < / span > < span class = "n" > join_path< / span > < span class = "p" > (< / span > < span class = "s1" > ' /blog@2' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .' < / span > < span class = "p" > )< / span >
< span class = "go" > ' /blog@2' < / span >
< / pre > < / div >
< div class = "comment-box" >
< h2 > Comments< / h2 >
< div id = "disqus_thread" > < / div >
< script >
var disqus_config = function() { this.page.identifier = "/docs/api/utils/join-path"; this.page.url = "https://www.getlektor.com/docs/api/utils/join-path/"; };
(function() {
var d = document, s = d.createElement('script');
s.src = '//lektordocumentation.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
< / script >
< noscript >
Please enable JavaScript to view the < a href = "https://disqus.com/?ref_noscript"
rel="nofollow">comments powered by Disqus.< / a >
< / noscript >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "bottomsummary" >
< div class = "container" >
< / div >
< / div >
< footer >
< div class = "container" >
< div class = "row" >
< div class = "col-sm-4 icon-bar" >
< a href = "https://github.com/lektor/lektor/" title = "Lektor on GitHub"
>< i class = "fa fa-github" > < / i > < / a >
< a href = "https://github.com/lektor/lektor/issues/" title = "Report Issues for Lektor"
>< i class = "fa fa-bug" > < / i > < / a >
< a href = "https://twitter.com/getlektor" title = "Find Lektor on Twitter"
>< i class = "fa fa-twitter" > < / i > < / a >
< a href = "https://gitter.im/lektor/lektor" title = "Chat on Gitter"
>< i class = "fa fa-comment" > < / i > < / a >
< a href = "https://github.com/lektor/lektor-website/tree/master/content/docs/api/utils/join-path/contents.lr" title = "View source for this page" > < i class = "fa fa-code" > < / i > < / a >
< / div >
< div class = "col-sm-8" >
< a href = "../../../../license/" > License & Copyright< / a > •
< a href = "../../../../contact/" > Contact< / a > •
Made with < i class = "fa fa-fw fa-heart" title = "Heart" > < span hidden > Heart< / span > < / i > in Carinthia
< / div >
< / div >
< / div >
< / footer >
2023-07-19 20:30:41 +02:00
< script type = text/javascript src = "../../../../static/app.js?h=8b801996" charset = "utf-8" > < / script >
2022-02-20 15:15:38 +01:00
< script >
((window.gitter = {}).chat = {}).options = {
room: 'lektor/lektor',
activationElement: null
};
document.write('< button class = "js-gitter-toggle-chat-button" > Toggle Chat< / button > ');
var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
if (dnt != "1" & & dnt != "yes") {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-70822533-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
} else {
console.debug("Respecting Do-Not-Track, not running analytics.");
}
< / script >
< script async src = 'https://www.google-analytics.com/analytics.js' > < / script >
< script async defer id = "github-bjs" src = "https://buttons.github.io/buttons.js" > < / script >
< script > ! function ( d , s , id ) { var js , fjs = d . getElementsByTagName ( s ) [ 0 ] , p = /^http:/ . test ( d . location ) ? 'http' : 'https' ; if ( ! d . getElementById ( id ) ) { js = d . createElement ( s ) ; js . id = id ; js . src = p + '://platform.twitter.com/widgets.js' ; fjs . parentNode . insertBefore ( js , fjs ) ; } } ( document , 'script' , 'twitter-wjs' ) ; < / script >
< script src = "https://sidecar.gitter.im/dist/sidecar.v1.js" async defer > < / script >
< / body >
< / html >