Skip to content

Commit

Permalink
Merge pull request #3 from iissnan/order-customization
Browse files Browse the repository at this point in the history
Custom order for posts
  • Loading branch information
leesei committed Oct 29, 2015
2 parents f3e077c + 484c5c1 commit 62373ef
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 7 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ $ npm install hexo-generator-index --save
``` yaml
index_generator:
per_page: 10
order_by: -date
```

- **per_page**: Posts displayed per page. (0 = disable pagination)
- **order_by**: Posts order. (Order by date descending by default)

## License

Expand Down
3 changes: 2 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
var assign = require('object-assign');

hexo.config.index_generator = assign({
per_page: typeof hexo.config.per_page === "undefined" ? 10 : hexo.config.per_page
per_page: typeof hexo.config.per_page === "undefined" ? 10 : hexo.config.per_page,
order_by: '-date'
}, hexo.config.index_generator);

hexo.extend.generator.register('index', require('./lib/generator'));
2 changes: 1 addition & 1 deletion lib/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var pagination = require('hexo-pagination');

module.exports = function(locals){
var config = this.config;
var posts = locals.posts.sort('-date');
var posts = locals.posts.sort(config.index_generator.order_by);
var paginationDir = config.pagination_dir || 'page';

return pagination('', posts, {
Expand Down
53 changes: 48 additions & 5 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ describe('Index generator', function(){

// Default config
hexo.config.index_generator = {
per_page: 10
per_page: 10,
order_by: '-date'
};

before(function(){
return Post.insert([
{source: 'foo', slug: 'foo', date: 1e8},
{source: 'bar', slug: 'bar', date: 1e8 + 1},
{source: 'baz', slug: 'baz', date: 1e8 - 1}
{source: 'foo', slug: 'foo', date: 1e8, order: 0},
{source: 'bar', slug: 'bar', date: 1e8 + 1, order: 10},
{source: 'baz', slug: 'baz', date: 1e8 - 1, order: 1}
]).then(function(data){
posts = Post.sort('-date');
locals = hexo.locals.toObject();
Expand All @@ -42,7 +43,7 @@ describe('Index generator', function(){

result[0].path.should.eql('');
result[0].data.current_url.should.eql('');
result[0].data.posts.should.eql(posts.limit(2))
result[0].data.posts.should.eql(posts.limit(2));
result[0].data.prev.should.eql(0);
result[0].data.prev_link.should.eql('');
result[0].data.next.should.eql(2);
Expand Down Expand Up @@ -86,6 +87,48 @@ describe('Index generator', function(){
hexo.config.index_generator.per_page = 10;
});

describe('order', function () {
it('default order', function () {
var result = generator(locals);

result[0].data.posts.should.eql(posts);
});

it('custom order', function () {
hexo.config.index_generator.order_by = '-order';

var result = generator(locals);

result[0].data.posts.eq(0).source.should.eql('bar');
result[0].data.posts.eq(1).source.should.eql('baz');
result[0].data.posts.eq(2).source.should.eql('foo');

hexo.config.index_generator.order_by = 'order';

result = generator(locals);

result[0].data.posts.eq(0).source.should.eql('foo');
result[0].data.posts.eq(1).source.should.eql('baz');
result[0].data.posts.eq(2).source.should.eql('bar');

// Restore config
delete hexo.config.index_generator.order_by;
});

it('custom order - invalid order key', function () {
hexo.config.index_generator.order_by = '-something';

var result = generator(locals);

result[0].data.posts.eq(0).source.should.eql('foo');
result[0].data.posts.eq(1).source.should.eql('bar');
result[0].data.posts.eq(2).source.should.eql('baz');

// Restore config
delete hexo.config.index_generator.order_by;
});
});

it('custom pagination_dir', function(){
hexo.config.index_generator.per_page = 1;
hexo.config.pagination_dir = 'yo';
Expand Down

0 comments on commit 62373ef

Please sign in to comment.