2012-11-24 17 views
12

私はブログをWordPressからJekyllに移しました。ここにもそこに修正が必要な部分はまだありますが、私は今この問題に直面しています。私はジキルでサイトマップを生成することができません。私は、私のために仕事をすることができるいくつかのプラグインがあることを知りました。サイト上プラグインなしでJekyllでサイトマップを生成

情報:

  • サイト全体がハンドコードのGithubのページを経由してホストされている

    • サイト - あなた私はへのいくつかのポインタを取得することができればそれは素晴らしいことだJBまたはOctopress

    を使用していませんどのように必要な作業を行う。

    注:この質問は以前のものと同じではありません。私は_siteを使用するオプションを探していません。

  • 答えて

    10

    サイトルートに「sitemap.xml」という名前の新しいファイルを作成し、そのページ内に液体タグを使用して、必要なデータをすべてのページと投稿に繰り返して投稿することができます。適切な標準に準拠したxml形式でサイト上のすべてのページをリストするページを生成したいと仮定した場合、それは簡単に仕事をするだろうと思われます。

    +1

    これは、投稿では可能ですが、ページではできません。静的ページがある場合、たとえば「私について」ページでは、site.posts配列の一部にはなりません。したがって、このappproachでサイトマップが不完全になります。 – Polygnome

    +3

    ポリゴン - これは正しくありません。あなたは '{site.pages%}のページの% 'を介してすべてのページ(投稿ではない)にアクセスできるページアクセッサがあります。関連する情報源はここにあります:https://github.com/mojombo/jekyll/blob/master/lib/jekyll/site.rb – heliotrope

    +0

    興味深い。 https://github.com/mojombo/jekyll/wiki/Template-Dataには記載されていません。たぶんあなたはそれをそこに加えますか? – Polygnome

    2

    プラグインを使用しないで、ジキルで完全なサイトマップを自動的に生成することはできません。

    あなたができることは、サイトマップをJSONデータとして生成し、それをconfig.ymlに挿入する独自のルビー(または他の)スクリプトを作成することです。そこからジキルからそのデータにアクセスして表示することができます。

    しかし、ジキルだけでそれを行う組み込みの方法はありません。

    10

    this articleJohn Dayで説明したように、あなたはこのコンテンツを持つサイトのルートでsitemap.xmlファイルを作成することができます:_config.yml

    --- 
    layout: nil 
    title : "Sitemap" 
    sitemap_exclude: y 
    --- 
    <?xml version="1.0" encoding="UTF-8"?> 
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
        {% for post in site.posts %} 
        <url> 
         <loc>{{site.production_url}}{{ post.url | remove: 'index.html' }}</loc> 
        </url> 
        {% endfor %} 
    
        {% for page in site.pages %} 
        {% if page.sitemap_exclude != 'y' %} 
        <url> 
         <loc>{{site.production_url}}{{ page.url | remove: 'index.html' }}</loc> 
        </url> 
        {% endif %} 
        {% endfor %} 
    </urlset> 
    

    を、(例えばhttp://example.com)サイトの完全なベースURLをproduction_urlという名前の変数を定義します。

    リンクをサイトマップから除外する場合は、ページまたは投稿の前面にsitemap_exclude: yを含めます。

    さらに高度な例については、​​を参照してください。

    2

    私のサイトがgithub-pagesでホストされているため、 githubページでこれがサポートされているようです。

    gems: 
        - jekyll-sitemap 
    

    (オプションであなたのGemfileに追加することができますが、鉱山は既に依存関係を経由して含まれていた)

    を(楽しい事実:

    ジャスト_config.ymlに追加する必要がありましたジキルリダイレクト-から

    +2

    他の誰かがこれにつまずく場合は、 ' - jekyll-sitemap'と入力する前にタブがないことを確認してください。そうすればJekyllはビルドできません。以前は私のGemfileに追加しましたが、_config.ymlではなく、サイトマップを生成しませんでした。 – matrixanomaly

    +0

    また、sitemap.xmlを_siteフォルダに表示させるためにサイトを完全に再生成する必要があることはわかりませんでした。 – evan

    関連する問題