Allow setting config URL with <link> (#1146)
* fix: allows for valid config types expansion * feat: config url can now come through link tag * fix: lints added coded * fix: slims down code per review * fix: expands query to find supported type * fix: removes typo in test copy * fix: changes validTypes to object * fix: groups config functions into one getConfig func * adds console message for config url * adds to docs * update docs * fix test * fix merge conflicts contributor addition moved to #1241 * avoids empty path with link without href. changes link console message * removes additional console * fixes link path in console * fix: remove superfluous .allcontributorsrc change
This commit is contained in:
parent
7b58f2f32b
commit
6b77aee214
@ -7,6 +7,15 @@
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" href="/cms.css"/>
|
||||
<!--
|
||||
Netlify CMS will automatically look for a "config.yml" file in the same directory
|
||||
as this "index.html", but you can override this by providing a link tag like this
|
||||
one:
|
||||
|
||||
<link href="path/to/config.yml" type="text/yaml" rel="cms-config-url">
|
||||
-->
|
||||
|
||||
|
||||
<script>
|
||||
window.repoFiles = {
|
||||
_posts: {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import yaml from "js-yaml";
|
||||
import { Map, List, fromJS } from "immutable";
|
||||
import { trimStart, flow, isBoolean } from "lodash";
|
||||
import { trimStart, flow, isBoolean, get } from "lodash";
|
||||
import { authenticateUser } from "Actions/auth";
|
||||
import * as publishModes from "Constants/publishModes";
|
||||
|
||||
@ -9,6 +9,19 @@ export const CONFIG_SUCCESS = "CONFIG_SUCCESS";
|
||||
export const CONFIG_FAILURE = "CONFIG_FAILURE";
|
||||
export const CONFIG_MERGE = "CONFIG_MERGE";
|
||||
|
||||
|
||||
const getConfigUrl = () => {
|
||||
const validTypes = { 'text/yaml': 'yaml', 'application/x-yaml': 'yaml' };
|
||||
const configLinkEl = document.querySelector('link[rel="cms-config-url"]');
|
||||
const isValidLink = configLinkEl && validTypes[configLinkEl.type] && get(configLinkEl, 'href');
|
||||
if (isValidLink) {
|
||||
const link = get(configLinkEl, 'href');
|
||||
console.log(`Using config file path: "${link}"`);
|
||||
return link;
|
||||
}
|
||||
return 'config.yml';
|
||||
}
|
||||
|
||||
const defaults = {
|
||||
publish_mode: publishModes.SIMPLE,
|
||||
};
|
||||
@ -130,7 +143,8 @@ export function loadConfig() {
|
||||
|
||||
try {
|
||||
const preloadedConfig = getState().config;
|
||||
const loadedConfig = await getConfig('config.yml', preloadedConfig && preloadedConfig.size > 1);
|
||||
const configUrl = getConfigUrl();
|
||||
const loadedConfig = await getConfig(configUrl, preloadedConfig && preloadedConfig.size > 1);
|
||||
|
||||
/**
|
||||
* Merge any existing configuration so the result can be validated.
|
||||
|
@ -7,6 +7,14 @@ position: 23
|
||||
|
||||
All configuration options for Netlify CMS are specified in the `config.yml` file, in the folder where you access the editor UI (usually in the `/admin` folder).
|
||||
|
||||
Alternatively, you can specify a custom config file using a link tag:
|
||||
|
||||
```html
|
||||
<!-- Note the "type" and "rel" attribute values, which are required. -->
|
||||
|
||||
<link href="path/to/config.yml" type="text/yaml" rel="cms-config-url">
|
||||
```
|
||||
|
||||
To see working configuration examples, you can [start from a template](https://www.netlifycms.org/docs/start-with-a-template) or check out the [CMS demo site](https://cms-demo.netlify.com). (No login required: click the login button and the CMS will open.) You can refer to the demo [configuration code](https://github.com/netlify/netlify-cms/blob/master/example/config.yml) to see how each option was configured.
|
||||
|
||||
You can find details about all configuration options below. Note that [YAML syntax](https://en.wikipedia.org/wiki/YAML#Basic_components) allows lists and objects to be written in block or inline style, and the code samples below include a mix of both.
|
||||
|
Loading…
x
Reference in New Issue
Block a user