blakeembrey / metalsmith-pagination

A Metalsmith plugin for paginating arrays and collections
MIT License
34 stars 10 forks source link

Automatically generate index.html pages when not specified in path property #14

Closed almirfilho closed 8 years ago

almirfilho commented 8 years ago

Today, if you wanna have your pages paths set as page/2/, and not as page/2/index.html, setting the path option as page/:num/ will make the generation just to output files named like /page/2, but we want files to be named as /page/2/index.html.

metalsmith.use(pagination({
  "collections.posts": {
    "path": "page/:num/"
  }
}));

Current output:

root/
  page/
    1        <- file, not folder
    2        <- file, not folder
    3        <- file, not folder
    ...

Desired output:

root/
  page/
    1/
      index.html
    2/
      index.html
    3/
      index.html
    ...

That way, it works in accordance with metalsmith-permalinks as well.

Let me know what you think about this. And thanks for this awesome plugin! =)

blakeembrey commented 8 years ago

I don't understand the issue you've written. What are you asking for?

blakeembrey commented 8 years ago

and not as page/2/index.html

You state this in the beginning, but everything else says that's actually what you want? That's literally the example in the README, so is there something else you're trying to do?

almirfilho commented 8 years ago

The problem is that when we configure the option {path: 'page/:num/index.html'}, the value of page.path of every page inside the templates (pagination variable) contains an 'index.html' appended to its end.

What I want is the possibility to configure the option {path: 'page/:num/'} (note, without 'index.html') to get the value of page.path inside templates as just 'page/2/' (without 'index.html') – but this way, pages are not being generated as an index.html file inside a '2' folder (page/2/index.html), they are being generated just as a file called '2'. I wanna fix this to get them generated as page/2/index.html in anyway.

almirfilho commented 8 years ago

@blakeembrey just take a look at the differences between the current and desired outputs in issue description above. I hope I made this clearer now =)

blakeembrey commented 8 years ago

Ok, now I understand the question. It should already work fine with metalsmith-pagination. Just look at http://blakeembrey.com/.

blakeembrey commented 8 years ago

What exactly do you intend to do that would change the behaviour?

blakeembrey commented 8 years ago

Actually, it's still not clear. Can you state the issue without mixing up implementation details? To confirm, you want to generate /path/2/index.html but have the path set as path/2? If so, that's what the permalinks plugin does already and I'll need to clear up what's missing.

almirfilho commented 8 years ago

Yeap, that's it. Generate the index.html file but have the path set without index.html at the end.

I took a look at your blog source and it's exactly in the same way I'm already using here. But path remains with the index.html at the end. Odd.

blakeembrey commented 8 years ago

@almirfilho It definitely works, been using it forever 😄 Are you using permalinks before or after pagination - remember that metalsmith is just a stack of functions (like Express, etc).

almirfilho commented 8 years ago

I was using it after metalsmith-permalinks and that was the problem. Sorry for the confusion and thanks for your help!