2017-07-14 4 views
2

私はペリカンのテンプレートに任意のメタデータを作成して、結果が既存のページにハイパーリンクするようにエレガントな方法を開発しようとしています。私はのような構造だページfirst-goalとカテゴリgoalを持っている場合たとえば、:ペリカン:ハイパーリンクされたメタデータを作成する

content 
├── pages 
│ ├── goal 
│ │ ├── first-goal.md 

私は記事のメタデータに次の操作を実行できるようにしたい:

テンプレートで
Title: First Article 
Goal: first-goal 

そして、

{%- for goal in article.goal %} 
    <a href="[link to goal page(s)]">goal</a> 
{% endfor %} 
:、それは同様に、そのゴールページへのリンクであることを goalメタデータなどから first-goalを翻訳0

私が持っていたいくつかの考え:

  • は私が修正することができる。この近くに何かを行うには良いプラグインはありますか?私は、リンカを見て、近いようでpelican-pluginsから交しではなく、かなり
  • 私はgoal:メタデータ内のハイパーリンクとして{filename}/pages/goal/first-goal.mdを使用し、その後、ハイパーリンクを追加goalを含めるようにFORMATTED_FIELDSを変更し、手動でできました。これは冗長で、既存の構造をまったく使用していないようです。
  • GOAL_LINKS = {'first_goal' : 'link-to-first-goal.html'}のようなディクショナリのような設定ファイルに手動でマッピングを作成し、テンプレートのGOAL_LINKS.first_goalを呼び出します。繰り返しますが、このソリューションは私が望むよりも少し手作業です。

既存のメタデータとカテゴリ構造を利用し、手動マッピングの必要性を軽減する一般的なケースで、これを達成する方法について誰かが似ていますか?

答えて

3

私は昨日非常に似たようなことをしました。私のサイトの構造は次のようになります:

content 
├── pages 
│ ├── cars.md 
│ 
├── cars 
│ ├── car-page.md 

私は記事を保存する場所を決定するためにスラグを使用することにしました。私の設定ファイルには、これらの行が含まれます。

ARTICLE_URL = '{slug}.html' 
ARTICLE_SAVE_AS = '{slug}.html' 

を、私は新しいファイルを作成するとき、私はcarsディレクトリにHTMLファイルを保存するためにペリカンを伝えるために使用される、car-page.mdの上部にあるカテゴリとスラグを置きますそしてそのように分類します

Title: My Car Page 
Slug: cars/car-page 
Category: cars 
... 

私は私が私の車のディレクトリ内のすべての記事を反復処理する方法を見つけ出す助けとトピックのためのランディングページとしてcars.mdファイルを使用this answerました。ループの私のバージョンは私のpage.htmlテンプレートファイルには、次のようになります。

{% block content %} 
    {{ page.content }} 
    <ul> 
    {% for article in articles if page.category == article.category %} 
     <li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} - {{ article.locale_date }}</a></li> 
    {% endfor %} 
    </ul> 
{% endblock %} 

Hereはあなたがアクションでパズルのすべてのピースを見たい場合は自分のサイトのレポへのリンクです。私は、事態がどのように行われているかを見るために、別のペリカンのサイトまたは2つのサイト(私のものか他の誰かのもの)に行くことを強くお勧めします。私は物事がどのように結びついているのかを理解するのに本当に役立ち、可能なことに私の心を開いた。ペリカンのサイトの一覧は次のとおりです:https://github.com/getpelican/pelican/wiki/Powered-by-Pelican

関連する問題