私は、ファイルのYAMLフロントマターで変数date
を指定し、その値に{{ page.date }}
でアクセスできることを知っています。これは、ファイルが更新されたときに日付を変更することを忘れてしまうので、面倒です。どうすればファイルの変更日にアクセスできますか?Jekyllのファイルの変更日を表示する方法は?
答えて
YAMLのフロントマターを使用しないとこれを行うことはできません。ただし、フロントマターでdate
を指定すると、実際には投稿のファイル名に指定されているdate
が上書きされます。
ファイルが2013-02-19-my-post.md
で、フロントマターにdate: 2013-02-20
があり、フロントマターが優先され、投稿の日付は2013-02-20
です。
投稿が変更された時期を把握したい場合は、フロントマットでカスタムフィールドを使用せずにこれを行う方法はありません。それをmodified-date
などと呼んでください。はい、ちょっと退屈です。 TextExpanderスニペットを使って現在の日付/時刻を適切な形式で自動的に出力します。これは便利です。
ジキル1.xから、現在処理中の投稿またはページのファイル名を示すpage.path
があります。指定したファイル名の変更時刻を取得するには、次のフィルタ(_plugins/myfilters.rb
で場所など)を追加します:
module Jekyll
module MyFilters
def file_date(input)
File.mtime(input)
end
end
end
Liquid::Template.register_filter(Jekyll::MyFilters)
だから今、あなたは
{{ page.path | file_date | date_to_string }}
残念ながら、 'page.path'が空であるため、これは私にとってはうまくいきません。私はどのようにそれにアクセスするのかを示す[投稿](http://stackoverflow.com/questions/13243469/how-can-a-jekyll-page-access-its-filename)を見つけましたが、これは投稿のみのために働くようです他のページではありません。 – Robert
Hmm ..それは奇妙なことですが、私はこれをページに正確に使用していますが、うまく動作しているようです。重要な場合は、jekyll(1.1.2)とruby(2.0.0p247)を使用しています。 –
'page.path'を設定するスクリプトがなければ' Liquid error:nilをStringに変換できません。 'それを使うと ''生成する ':未定義のメソッド' name''が得られます。私はRuby 1.9.3とJekyll 0.11.2を使用していますので、更新するのは簡単ではありません... – Robert
として、例えば、あなたの投稿やページに日付をレンダリングすることができますこれは、あなたが探しているものを行い、比較的新しいプラグインです:
alternatをGoogleの検索中にそれを見つけたhttps://github.com/gjtorikian/jekyll-last-modified-at
(
GitHubがプラグインをホワイトリストに追加するまで、この回答とスタンドをupvoteしましょう。 –
jekyll-last-modified-atのインストールに問題がありました。私はgem update、gem install、bundle execを試してバンドルをインストールし、config.ymlに宝石を入れようとしましたが、この "Dependency Error:Yikes!"は解決できませんでした。あなたはjekyll-last-modified --at .... "私はGithubを使用しているので、これがホワイトリストに登録されていなければ、とにかく私にとっては良いことではありません;-) – Athanassios
Gitを使用している場合は、変更されたファイルの先頭に日付フィールドを自動的に更新するプリコミットフックをインストールすることができます。私は非常にプレコミットフックが本当にコミットの内容を変更できることを学ぶために驚いていた!が期待される
#!/bin/sh
# Contents of .git/hooks/pre-commit
set -e
set -x
sed -i "s/^date:.*$/date: $(TZ=UTC date "+%Y-%m-%d %H:%M:%S %Z")/" _config.yml
git add _config.yml
_config.yml
: - あなたは手動でのみリポジトリの各クローンにpre-commitフックをインストールする必要があり、次の草稿は、Webサイト全体の全体的な修正時刻を更新するための私の作品フィールド "date"は、その内容は各コミットに置き換えられます。その後、{{ site.date }}
でアクセスできます。例:(git diff-index --cached
経由クエリ)
date: 2015-04-10 10:51:37 UTC
スクリプトが変更されたページだけか、記事を更新するように一般化することができる - 私はこれを実装するための時間を持っていないが、私はかどうかを学習に興味があると思い最終的なソリューションが最終的に飛び出す。
krlmlrの投稿に基づいて、YAMLの修正されたファイルの先頭のdate:
フィールドの更新時刻を更新するための事前コミットスクリプトを書きました。
#!/bin/sh
# Contents of .git/hooks/pre-commit
git diff --cached --name-status | grep "^M" | while read a b; do
cat $b | sed "/---.*/,/---.*/s/^date:.*$/date: $(date -u "+%Y-%m-%d %T %Z")/" > tmp
mv tmp $b
git add $b
done
私にとってはうまくいっています。私は実際には、変更された時刻を示すためにupdate:
フィールドを使用し、作成時刻を示すフィールドにはdate:
フィールドを使用します。
wfm using gh-pages! {%page.nodate%}を追加しなければならなかった{{page.date |日付: "%b%-d、%Y"}} {%endunless%}を_layouts内の私のdocpage.htmlに追加し、日付を各ファイルの先頭に追加します。これは素晴らしいクリスマスプレゼントでした。 – catpaws
魅力的な作品です!私が変更したのは日付形式だけでした。私は(現在の)デフォルトのJekyll日付形式に一致する 'date" +%Y-%m-%d%T%z "'を使用しています。 –
- 1. ローカルホストのColdFusionで編集したファイルの変更を表示する方法は?
- 2. SSRS日付/時刻レポートでの表示方法を変更するパラメータ
- 3. ファイルの名前、変更された日付、変更時刻の表示
- 4. カレンダー変更の日付形式を週表示で表示
- 5. シェルフP4の変更を表示する方法は?
- 6. Vistaホームプレミアムのファイルの「変更日時」を変更するには?
- 7. ポートレットに変更日付を表示
- 8. 更新時に日付ピッカーをハイライト表示する方法
- 9. 日付の表示方法は?
- 10. Googleのウェブサイト名の表示方法を変更する
- 11. TabbedViewNavigatorApplicationのタブを変更するときの表示方法
- 12. OneDriveの子の変更を表示する方法
- 13. 行を変更せずにDataGridViewの変更を表示する方法
- 14. 日食で日本語の文字を表示する方法
- 15. アクティビティを変更して次のページを表示する方法
- 16. 入力ファイル:更新後もファイルの名前を表示する方法は?
- 17. Android - 共有プレビューで表示するファイルを変更する方法
- 18. MVVMビューでデータ変更を表示する方法は?
- 19. レコードの表示ビューを変更して行に変更する方法
- 20. メンテナンスの「変更」モードでダイアログを表示する方法
- 21. 表示方法EditTextのデータをアクティビティに変更する
- 22. ブートストラップ - 列の表示順序を変更する方法
- 23. iPhone 3.0のIBで表示サイズを変更する方法
- 24. アップロードしたファイルを/ pdfに表示/変換する方法は?
- 25. 日付ではなく日付順で表示する方法
- 26. カテゴリのリンクをWordPressに表示する方法を変更するには?
- 27. 月、日、年、および時刻のみの日付ピッカー表示の変更方法
- 28. ハイチャート出力を変更して開始日を表示する
- 29. ファイルの最終更新日を変更するには
- 30. 式を変更することなく、VBAのセルの値(表示テキスト)を変更する方法は?
投稿や一般的なことはできませんか?投稿の場合は、ファイル名にエンコードされた日付が綺麗であるため、変更日を取得する必要はありません(投稿はほとんど変更されません)。しかし、Jekyllが処理している他のすべてのMarkdownファイルについて、私はその日付を持っておらず、YAMLのフロントマーカでそれをエンコードしています。これらのファイルは頻繁に変更されるため、自動的に修正日を取得したいと考えています。 – Robert
あなたが描いている機能は、投稿やページのどちらでもJekyllに組み込まれていません。私は理論的にはRubyの 'File.mtime'を利用する[Jekyll plugin](https://github.com/mojombo/jekyll/wiki/Plugins)を書くことができると思うが、それは価値があるよりも面倒なようだ。さらに、意図しない結果が生じる可能性があります。たとえば、修正日を更新せずにページのフロントマットを編集したい場合はどうなりますか?カスタム変数は最善の方法だと思います。 –