aboutsummaryrefslogtreecommitdiffstats
path: root/man/blogc-pagination.7.ronn
blob: cca8abaffe61fc9c10e0683d2c8b25d7101ba081 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
blogc-pagination(7) -- blogc's pagination support
=================================================

## DESCRIPTION

blogc(1) supports some basic pagination and post filtering, when running on
`listing` mode. Files are listed in the order that they are provided to
blogc(1) in the command line, no sorting is done.

## PAGINATION PARAMETERS

blogc(1) accepts some variables as `-D` options, that are used to filter the
files passed as arguments to it:

  * `FILTER_PAGE`:
    Integer, current page. If calling blogc(1) with 10 files,
    `FILTER_PER_PAGE=4` and `FILTER_PAGE=3`, it will return just the 2 last
    files, skipping the first 2 pages with 4 files each one.

  * `FILTER_PER_PAGE`:
    Integer, limits the maximum number of files to be listed. If negative or
    `0`, no posts are included. Have no effect if `FILTER_PAGE` is not
    defined.

  * `FILTER_TAG`:
    String, if defined, blogc(1) will only list files that declare a `TAGS`
    variable, as a space-separated list of tags (tags can't have spaces,
    obviously). See blogc-source(7) for details about how to define source
    variables. The pagination filters will only act on the files with the
    provided tag, instead of filtering the whole file set.

  * `FILTER_REVERSE`:
    Boolean (1/y/yes/true/on), if set, blogc(1) will list files in reverse order.
    This is always the first filter applied to the files. All the previous filters
    will get the files already in the reverse order, and won't care about this.

  * `FILTER_SORT`:
    Boolean (1/y/yes/true/on), if set, blogc(1) will sort files using the `DATE`
    variable provided in the files, instead of respecting the order of the
    source files provided to blogc(1). All the previous filters will get the
    files already sorted, and won't care about this.

## TEMPLATE VARIABLES

blogc(1) will export some global blogc-template(7) variables, that can be used
to build links for next and previous page.

  * `CURRENT_PAGE`:
    Integer, usually the same value of `FILTER_PAGE` pagination paramenter, if
    defined, or 1.

  * `FIRST_PAGE`:
    Integer, 1 if more than zero files were listed.

  * `LAST_PAGE`:
    Integer, last page available if more than zero files were listed.

  * `PREVIOUS_PAGE`:
    Integer, `CURRENT_PAGE` minus 1, if `CURRENT_PAGE` is bigger than 1.

  * `NEXT_PAGE`:
    Integer, `CURRENT_PAGE` plus 1, if `LAST_PAGE` is bigger than `CURRENT_PAGE`.

blogc(1) can output the value of the variables after evaluation, instead of
actually rendering the files, using the `-p` option. See blogc(1) for details.
This is useful to know the last page that needs to be built, using `-p LAST_PAGE`,
for example.

### Date variables

blogc(1) will also export some global blogc-template(7) variables related to
the `DATE` variable, as specified in blogc-source(7).

  * `DATE_FIRST`:
    String, `DATE` variable from the first file in the listing.
  * `DATE_LAST`:
    String, `DATE` variable from the last file in the listing.

These variables can be also formatted with `DATE_FORMAT` global blogc(1) parameter,
if provided, using `DATE_FIRST_FORMATTED` and `DATE_LAST_FORMATTED` global
template variables.

### File name variables

blogc(1) will also export some global blogc-template(7) variables related to
the `FILENAME` variable, as automatically exported by the source file parser,
see blogc-source(7) for details.

  * `FILENAME_FIRST`:
    String, `FILENAME` variable from the first file in the listing.
  * `FILENAME_LAST`:
    String, `FILENAME` variable from the last file in the listing.

## EXAMPLES

### Source file with tags

    TITLE: My post
    TAGS: foo bar baz
    -----------------
    Post content

This source file defines 3 tags: `foo`, `bar` and `baz`.

### Template with pagination

    {% block listing_once %}
    <ul class="pager">
        {% ifdef PREVIOUS_PAGE %}
        <li class="previous">
            <a href="/page/{{ PREVIOUS_PAGE }}/">&larr; Newer</a>
        </li>
        {% endif %}
        {% ifdef NEXT_PAGE %}
        <li class="next">
            <a href="/page/{{ NEXT_PAGE }}/">Older &rarr;</a>
        </li>
        {% endif %}
    </ul>
    {% endblock %}

This example does not uses all the variables, but the concept is the same for
all of them.

## BUGS

Please report any issues to: <https://github.com/blogc/blogc>

## AUTHOR

Rafael G. Martins &lt;<rafael@rafaelmartins.eng.br>&gt;

## SEE ALSO

blogc(1), blogc-source(7), blogc-template(7)