tamlog

主にwebのフロント回り たまに登山

Craft CMS - date() をRSSの時間形式へ変換

スポンサーリンク

このエントリーは、Craft CMS Advent Calendar 2017の3日目のエントリーです。

adventar.org

 

 2日目の記事を書いてたらもう一ついけそうな気がしたので続けます。

 

 

標準の rss() 使ってたのですがどうも「timezone」が指定出来ずで

date() を使ってRSSの時間形式にしたというお話。

 

取得したいRSSの値はこちら:「 D, d M Y H:i:s +0900」

 

では、はじめます。 

最初は.rss()を使っていたのですが基準時間がUTCの0になっているようでうまくいかず。+0900が無い感じですね。

<pubDate>{{ entry.postDate.rss  }} </pubDate>

craftcms.com

で、別の方法と思ってdate()を使ったら今度は時間は良いのですが日本語に翻訳されてしうという・・・

コード
<pubDate>{{ entry.postDate | date('DD, d MM Y H:i:s O')  }} </pubDate>

理想
<pubDate>Mon, 31 Jul 2017 11:37:07 +0900</pubDate>

現実
<pubDate>月, 31 Month7 2017 11:37:07 +0900</pubDate>

結局どうしたかというと

翻訳された物を再度 replace する感じで対応。

  {{ entry.postDate|date('D, d M Y H:i:s O')|replace({
        日: 'Sun',
        月: 'Mon',
        火: 'Tue',
        水: 'Wed',
        木: 'Thu',
        金: 'Fri',
        土: 'Sat',
        Month1: 'Jan',
        Month2: 'Feb',
        Month3: 'Mar',
        Month4: 'Apr',
        Month5: 'May',
        Month6: 'Jun',
        Month7: 'Jul',
        Month8: 'Aug',
        Month9: 'Sep',
        Month10: 'Oct',
        Month11: 'Nov',
        Month12: 'Dec',
        }) }}

 

もしくはこうい形でも良いですね。

{% set weeks = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']%}
{% set months = ['-', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']%}
{% set postDate =  weeks[entry.postDate | date('w')] ~ ', '~ entry.postDate|date('d') ~ ' ' ~ months[entry.postDate.month] ~ ' ' ~ entry.postDate|date('Y H:i:s O')  %}

 

もっと良い方法ありそうですが、この辺りで

以上、date() をRSSの時間形式へ変換でした。

 

 

カーズ/クロスロード MovieNEX [ブルーレイ+DVD+デジタルコピー(クラウド対応)+MovieNEXワールド] [Blu-ray]

カーズ/クロスロード MovieNEX [ブルーレイ+DVD+デジタルコピー(クラウド対応)+MovieNEXワールド] [Blu-ray]