web-dev-qa-db-fra.com

Jekyll: inclure un fichier du répertoire en dehors de _includes

J'ai un répertoire appelé /patterns dans mon site Jekyll, dont la structure ressemble généralement à ceci:

_includes _layouts _site /patterns index.html

Je dois conserver le répertoire /patterns en dehors de _includes pour un certain nombre de raisons, mais surtout parce que je dois extraire les fichiers de /patterns dans une iframe pour les afficher dans une bibliothèque de modèles).

J'aimerais inclure des fichiers de /patterns dans mes pages Jekyll, mais utiliser {% include /patterns/file.html %} doesn't work as it points to the_ includesfolder. How would I go about including a file from a directory that isn't_ includes`?

15
Brad Frost

Vous pouvez modifier le répertoire utilisé par la balise include avec includes_dir dans votre _config.yml. Il ne semble pas que vous puissiez définir plusieurs chemins (source: https://jekyllrb.com/docs/configuration/ ).

Dans tous les cas, les fichiers dans _includes ne se retrouvent pas dans votre sortie. Vous pouvez séparer les inclusions spécifiques à un modèle dans _includes/patterns/, mais la seule chose qui aurait un effet sur votre site actif serait l'emplacement où ces fichiers ont été inclus.

6
Ross

Dans votre _config.yml, vous pouvez ajouter des répertoires supplémentaires comme ceci:

includes:
- patterns

Aussi simple que ça!

En action ici sur mon site Jekyll: https://github.com/pschfr/pschfr.github.io/blob/master/_config.yml

1
Paul

J'ai mis un lien symbolique à la place du répertoire _includes qui pointe là où je veux, car includes_dir ne semble pas aimer ../ pour spécifier un chemin relatif (un ou plusieurs répertoires plus haut).

1
KFunk

Je pense que collections fera ce dont vous avez besoin. Ils peuvent être inclus et rendus au format HTML public.

Voici un exemple de projet qui ne fait que cela.

1
Ben Ubois

Vous pouvez choisir de inclure des fragments de fichier relatifs au fichier Actuel} - en utilisant la balise include_relative pour votre /patterns/file.html

Pour la structure de répertoire, vous avez:

_includes
_layouts
_site
/patterns/file.html
index.html

Dans ce cas, ce qui suit ne fonctionne pas:

{% include /patterns/file.html %}

Utilisez include_relative comme /pattern est relatif à index.html comme current file:

{% include_relative patterns/file.html %}
1
Chetabahana