Allow the user to set collections_dir to put all collections under one subdirectory (#6331)
Merge pull request 6331
This commit is contained in:
parent
6f3d7a0034
commit
0331fb41ad
|
@ -46,6 +46,17 @@ defaults:
|
||||||
layout: page
|
layout: page
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**New**: You can optionally specify a directory if you want to store all your collections
|
||||||
|
in the same place:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
collections:
|
||||||
|
collections_dir: my_collections
|
||||||
|
```
|
||||||
|
|
||||||
|
Then Jekyll will look in `my_collections/_books` for the `books` collection, and
|
||||||
|
in `my_collections/_recipes` for the `recipes` collection.
|
||||||
|
|
||||||
### Step 2: Add your content {#step2}
|
### Step 2: Add your content {#step2}
|
||||||
|
|
||||||
Create a corresponding folder (e.g. `<source>/_my_collection`) and add
|
Create a corresponding folder (e.g. `<source>/_my_collection`) and add
|
||||||
|
@ -111,7 +122,7 @@ _my_collection/
|
||||||
|
|
||||||
each of the following `permalink` configurations will produce the document structure shown below it.
|
each of the following `permalink` configurations will produce the document structure shown below it.
|
||||||
|
|
||||||
* **Default**
|
* **Default**
|
||||||
Same as `permalink: /:collection/:path`.
|
Same as `permalink: /:collection/:path`.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -121,7 +132,7 @@ each of the following `permalink` configurations will produce the document struc
|
||||||
│ └── some_doc.html
|
│ └── some_doc.html
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
* `permalink: pretty`
|
* `permalink: pretty`
|
||||||
Same as `permalink: /:collection/:path/`.
|
Same as `permalink: /:collection/:path/`.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -225,7 +236,7 @@ each of the following `permalink` configurations will produce the document struc
|
||||||
|
|
||||||
Each collection is accessible as a field on the `site` variable. For example, if
|
Each collection is accessible as a field on the `site` variable. For example, if
|
||||||
you want to access the `albums` collection found in `_albums`, you'd use
|
you want to access the `albums` collection found in `_albums`, you'd use
|
||||||
`site.albums`.
|
`site.albums`.
|
||||||
|
|
||||||
Each collection is itself an array of documents (e.g., `site.albums` is an array of documents, much like `site.pages` and
|
Each collection is itself an array of documents (e.g., `site.albums` is an array of documents, much like `site.pages` and
|
||||||
`site.posts`). See the table below for how to access attributes of those documents.
|
`site.posts`). See the table below for how to access attributes of those documents.
|
||||||
|
@ -310,10 +321,10 @@ you specified in your `_config.yml` (if present) and the following information:
|
||||||
|
|
||||||
<div class="note info">
|
<div class="note info">
|
||||||
<h5>A Hard-Coded Collection</h5>
|
<h5>A Hard-Coded Collection</h5>
|
||||||
<p>In addition to any collections you create yourself, the
|
<p>In addition to any collections you create yourself, the
|
||||||
<code>posts</code> collection is hard-coded into Jekyll. It exists whether
|
<code>posts</code> collection is hard-coded into Jekyll. It exists whether
|
||||||
you have a <code>_posts</code> directory or not. This is something to note
|
you have a <code>_posts</code> directory or not. This is something to note
|
||||||
when iterating through <code>site.collections</code> as you may need to
|
when iterating through <code>site.collections</code> as you may need to
|
||||||
filter it out.</p>
|
filter it out.</p>
|
||||||
<p>You may wish to use filters to find your collection:
|
<p>You may wish to use filters to find your collection:
|
||||||
<code>{% raw %}{{ site.collections | where: "label", "myCollection" | first }}{% endraw %}</code></p>
|
<code>{% raw %}{{ site.collections | where: "label", "myCollection" | first }}{% endraw %}</code></p>
|
||||||
|
|
|
@ -602,12 +602,13 @@ file or on the command-line.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Where things are
|
# Where things are
|
||||||
source: .
|
source: .
|
||||||
destination: ./_site
|
destination: ./_site
|
||||||
plugins_dir: _plugins
|
collections_dir: .
|
||||||
layouts_dir: _layouts
|
plugins_dir: _plugins
|
||||||
data_dir: _data
|
layouts_dir: _layouts
|
||||||
includes_dir: _includes
|
data_dir: _data
|
||||||
|
includes_dir: _includes
|
||||||
collections:
|
collections:
|
||||||
posts:
|
posts:
|
||||||
output: true
|
output: true
|
||||||
|
|
|
@ -100,7 +100,9 @@ module Jekyll
|
||||||
# Returns a String containing the directory name where the collection
|
# Returns a String containing the directory name where the collection
|
||||||
# is stored on the filesystem.
|
# is stored on the filesystem.
|
||||||
def relative_directory
|
def relative_directory
|
||||||
@relative_directory ||= "_#{label}"
|
@relative_directory ||= Pathname.new(directory).relative_path_from(
|
||||||
|
Pathname.new(site.source)
|
||||||
|
).to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
# The full path to the directory containing the collection.
|
# The full path to the directory containing the collection.
|
||||||
|
@ -108,7 +110,9 @@ module Jekyll
|
||||||
# Returns a String containing th directory name where the collection
|
# Returns a String containing th directory name where the collection
|
||||||
# is stored on the filesystem.
|
# is stored on the filesystem.
|
||||||
def directory
|
def directory
|
||||||
@directory ||= site.in_source_dir(relative_directory)
|
@directory ||= site.in_source_dir(
|
||||||
|
File.join(site.config["collections_dir"], "_#{label}")
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
# The full path to the directory containing the collection, with
|
# The full path to the directory containing the collection, with
|
||||||
|
|
|
@ -8,6 +8,7 @@ module Jekyll
|
||||||
# Where things are
|
# Where things are
|
||||||
"source" => Dir.pwd,
|
"source" => Dir.pwd,
|
||||||
"destination" => File.join(Dir.pwd, "_site"),
|
"destination" => File.join(Dir.pwd, "_site"),
|
||||||
|
"collections_dir" => "",
|
||||||
"plugins_dir" => "_plugins",
|
"plugins_dir" => "_plugins",
|
||||||
"layouts_dir" => "_layouts",
|
"layouts_dir" => "_layouts",
|
||||||
"data_dir" => "_data",
|
"data_dir" => "_data",
|
||||||
|
|
Loading…
Reference in New Issue