Jekyll Internal Post Links











up vote
0
down vote

favorite












This is a pretty niche problem, but... I run a blog that runs on Jekyll and I post very regularly. To keep my editing sane I regularly archive posts, and those archived posts get a pretty strict structure. But, I go a full year before archiving.



Where this hurts is in links to other posts. I used to be able to absolutely reference the file name (per jekyll markdown internal links), but this appears to be being deprecated:



Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.


Now, if I have to include the full path to the file, then when I archive my posts for the year I have to parse all of the posts for the entire year and update any links between them to include the new file path for their archived location, defeating the point of using this tool at all. A direct link to the page would actually be better, given that I change my URL structure less often.



Is there a better solution for internal links that doesn't depend on the file structure, allowing a file to be moved without having to update every link to that file?



Example File structure:



 _posts
-2018
-post1
-post2
-etc
-Archive
-2017
-2016


If there's no better answer, I may just have to go back to using absolute external links.










share|improve this question






















  • it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
    – Ron
    Nov 17 at 7:02










  • Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
    – David Scott IV
    Nov 18 at 9:01















up vote
0
down vote

favorite












This is a pretty niche problem, but... I run a blog that runs on Jekyll and I post very regularly. To keep my editing sane I regularly archive posts, and those archived posts get a pretty strict structure. But, I go a full year before archiving.



Where this hurts is in links to other posts. I used to be able to absolutely reference the file name (per jekyll markdown internal links), but this appears to be being deprecated:



Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.


Now, if I have to include the full path to the file, then when I archive my posts for the year I have to parse all of the posts for the entire year and update any links between them to include the new file path for their archived location, defeating the point of using this tool at all. A direct link to the page would actually be better, given that I change my URL structure less often.



Is there a better solution for internal links that doesn't depend on the file structure, allowing a file to be moved without having to update every link to that file?



Example File structure:



 _posts
-2018
-post1
-post2
-etc
-Archive
-2017
-2016


If there's no better answer, I may just have to go back to using absolute external links.










share|improve this question






















  • it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
    – Ron
    Nov 17 at 7:02










  • Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
    – David Scott IV
    Nov 18 at 9:01













up vote
0
down vote

favorite









up vote
0
down vote

favorite











This is a pretty niche problem, but... I run a blog that runs on Jekyll and I post very regularly. To keep my editing sane I regularly archive posts, and those archived posts get a pretty strict structure. But, I go a full year before archiving.



Where this hurts is in links to other posts. I used to be able to absolutely reference the file name (per jekyll markdown internal links), but this appears to be being deprecated:



Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.


Now, if I have to include the full path to the file, then when I archive my posts for the year I have to parse all of the posts for the entire year and update any links between them to include the new file path for their archived location, defeating the point of using this tool at all. A direct link to the page would actually be better, given that I change my URL structure less often.



Is there a better solution for internal links that doesn't depend on the file structure, allowing a file to be moved without having to update every link to that file?



Example File structure:



 _posts
-2018
-post1
-post2
-etc
-Archive
-2017
-2016


If there's no better answer, I may just have to go back to using absolute external links.










share|improve this question













This is a pretty niche problem, but... I run a blog that runs on Jekyll and I post very regularly. To keep my editing sane I regularly archive posts, and those archived posts get a pretty strict structure. But, I go a full year before archiving.



Where this hurts is in links to other posts. I used to be able to absolutely reference the file name (per jekyll markdown internal links), but this appears to be being deprecated:



Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.


Now, if I have to include the full path to the file, then when I archive my posts for the year I have to parse all of the posts for the entire year and update any links between them to include the new file path for their archived location, defeating the point of using this tool at all. A direct link to the page would actually be better, given that I change my URL structure less often.



Is there a better solution for internal links that doesn't depend on the file structure, allowing a file to be moved without having to update every link to that file?



Example File structure:



 _posts
-2018
-post1
-post2
-etc
-Archive
-2017
-2016


If there's no better answer, I may just have to go back to using absolute external links.







jekyll






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 at 16:13









David Scott IV

115212




115212












  • it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
    – Ron
    Nov 17 at 7:02










  • Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
    – David Scott IV
    Nov 18 at 9:01


















  • it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
    – Ron
    Nov 17 at 7:02










  • Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
    – David Scott IV
    Nov 18 at 9:01
















it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
– Ron
Nov 17 at 7:02




it looks like you are right - I don't use post_url but it was my understanding that it worked as you have been using it. Now it looks like it wants the correct path no matter what (I don't think it is deprecated, just new behavior - wants full path?). There is also link which does much the same thing, but it looks like it wants the path too.
– Ron
Nov 17 at 7:02












Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
– David Scott IV
Nov 18 at 9:01




Needing the path is actually more likely to change for me though, as I adjust my archiving. The path is likely to change, but the link structure is not. If the path is required... it's actually easier for me to do absolute URLs given that those are weirdly less likely to change..
– David Scott IV
Nov 18 at 9:01












1 Answer
1






active

oldest

votes

















up vote
1
down vote



accepted










Solution 1. Use your own include



Create an post_url.html file and write this:



{% include post_url.html slug="2018-09-06-peppermint" %}


The include (called post_url.html) should find the post with the right slug and echo the link, like this:



{% assign link = site.posts | where:'slug',include.slug %}
<a href="{{ link[0].url }}">{{ link[0].title }}</a>




Solution 2. Search and replace



You have to parse posts? A simple search and replace on all files, looking for (/2018/ and replace with (/Archive/2018/ should do the trick (if you use markdown links). This should take just a few seconds.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53323570%2fjekyll-internal-post-links%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    1
    down vote



    accepted










    Solution 1. Use your own include



    Create an post_url.html file and write this:



    {% include post_url.html slug="2018-09-06-peppermint" %}


    The include (called post_url.html) should find the post with the right slug and echo the link, like this:



    {% assign link = site.posts | where:'slug',include.slug %}
    <a href="{{ link[0].url }}">{{ link[0].title }}</a>




    Solution 2. Search and replace



    You have to parse posts? A simple search and replace on all files, looking for (/2018/ and replace with (/Archive/2018/ should do the trick (if you use markdown links). This should take just a few seconds.






    share|improve this answer

























      up vote
      1
      down vote



      accepted










      Solution 1. Use your own include



      Create an post_url.html file and write this:



      {% include post_url.html slug="2018-09-06-peppermint" %}


      The include (called post_url.html) should find the post with the right slug and echo the link, like this:



      {% assign link = site.posts | where:'slug',include.slug %}
      <a href="{{ link[0].url }}">{{ link[0].title }}</a>




      Solution 2. Search and replace



      You have to parse posts? A simple search and replace on all files, looking for (/2018/ and replace with (/Archive/2018/ should do the trick (if you use markdown links). This should take just a few seconds.






      share|improve this answer























        up vote
        1
        down vote



        accepted







        up vote
        1
        down vote



        accepted






        Solution 1. Use your own include



        Create an post_url.html file and write this:



        {% include post_url.html slug="2018-09-06-peppermint" %}


        The include (called post_url.html) should find the post with the right slug and echo the link, like this:



        {% assign link = site.posts | where:'slug',include.slug %}
        <a href="{{ link[0].url }}">{{ link[0].title }}</a>




        Solution 2. Search and replace



        You have to parse posts? A simple search and replace on all files, looking for (/2018/ and replace with (/Archive/2018/ should do the trick (if you use markdown links). This should take just a few seconds.






        share|improve this answer












        Solution 1. Use your own include



        Create an post_url.html file and write this:



        {% include post_url.html slug="2018-09-06-peppermint" %}


        The include (called post_url.html) should find the post with the right slug and echo the link, like this:



        {% assign link = site.posts | where:'slug',include.slug %}
        <a href="{{ link[0].url }}">{{ link[0].title }}</a>




        Solution 2. Search and replace



        You have to parse posts? A simple search and replace on all files, looking for (/2018/ and replace with (/Archive/2018/ should do the trick (if you use markdown links). This should take just a few seconds.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 19 at 8:21









        JoostS

        5,92721536




        5,92721536






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53323570%2fjekyll-internal-post-links%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to send String Array data to Server using php in android

            Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

            Is anime1.com a legal site for watching anime?