2010-05-28 3 views
0

Y at-il un moyen d'obtenir l'URL d'un page sur Jekyll? Par pages que je veux dire des fichiers textiles non-post, comme about.html et download.html la hiérarchie suivante:jekyll - ajouter des choses à des pages automatiquement, sur des pages github

root 
| 
+- _includes 
| 
+- _layouts 
| 
+- _posts 
| 
+- _config.yml 
| 
+- index.textile 
| 
+- about.textile 
| 
`- download.textile 

Je voudrais faire quelque chose comme ceci:

<h1><a href="{{ page.url }}">{{ page.title }}</a></h1> 

Cela fonctionne avec des postes parce qu'ils ont leur URL incluse sur the post's to_liquid method. Pages d'autre part ne semblent pas inclure quelque chose comme ça - ils ont les propriétés dont j'ai besoin (ou si it seems), mais ils ne sont pas les exporter to_liquid; J'aimerais le redéfinir. Y a-t-il un moyen de faire cela?

J'ai trouvé jekyll_extensions, mais je ne sais pas si cela fonctionne sur mon environnement cible (pages github).

Je voudrais éviter d'avoir à inclure un paramètre d'URL sur toutes les têtes de YAML, si possible.

Merci beaucoup!

Répondre

3

Je pense que la réponse est non. Voici the Jekyll wiki sur ce qui est dans l'élément page global:

Pour les messages, c'est l'union des données en la matière avant YAML et les données calculées (telles que l'URL et la date). Pour les pages normales, ceci est juste le YAML Front Matter.

Même si vous pouvez reconfigurer le moteur de Jekyll à le faire pour vous sur place, je ne sais pas comment vous pourriez faire ce travail sur ses propres pages de Github (car ils utiliseront la Jekyll vanille plutôt que le vôtre).

+0

sacrément. J'aimerais que ce ne soit pas si ... limitant. Merci beaucoup, je suppose que je vais simplement utiliser le YAML (ou créer des postes avec des dates fausses, par exemple 0000-01-01) – kikito

+0

Une option est de générer les Jekyll _SITE/fichiers sur votre système local (vous pouvez avoir modifié Jekyll autant comme vous voulez - y compris les plugins). Tout est dans votre branche principale. Ensuite, utilisez Grancher (http://timeless.judofyr.net/grancher) pour copier _sites/gh-pages, valider et pousser avec une simple commande "rake publish". –

3

Il est maintenant possible de cours jekyll via monkey-patch son nouveau système de plugins!

Il suffit d'ajouter ce fichier (page.rb) sur votre répertoire _plugins:

module Jekyll 
    class Page 
    def to_liquid 
     self.data.deep_merge({ 
     "url" => File.join(@dir, self.url), 
     "content" => self.content, 
     "dir" => self.dir, 
     "name" => self.name, 
     "ext" => self.ext, 
     "basename" => self.basename 
     }) 
    end 
    end 
end 

Je viens ici to_liquid modifié, mais je aurais pu ajouter aussi d'autres méthodes, etc.