エントリを移行してきたことで記事が増えた。

MT のエントリを Craft CMS に移行する
https://note.mersy418.com/article/mtentries-to-craft

mersy note

ただ、このエントリで書いたみたいに連携用のエントリには lightswitch のフィールドを持たせることにした。

Craft CMS で lightswitch がONのエントリを取り出す #craftcms
https://note.mersy418.com/article/craft-cms-list-specificentries

mersy note

ここでも書いたんだけど、初期値を ON にしてしまうと当然全てのエントリがONの状態になってしまうわけで。。。

Craft CMS の lightswitchフィールドの値 #craftcms
https://note.mersy418.com/article/craft-cms-lightswitch-value

mersy note

ということで、これまで取り出していたルールの Diary タグがついたものを除外して、直近100件のエントリについて lightswitch をONにすることにした。

一括編集とかはないのでその辺は JSON を用意して Feedme でアップデートするという方法で。

とりあえず update.json をこんな感じで用意する。

{
    "items": [
    {# Diary という名前のタグをセット #}
    {% set tagDiary = craft.tags().title('Diary').one() %}
    {# Diary タグと関連づいているエントリ ID を取得 #}
    {% set diaryEntryIds = craft.entries.section('article').relatedTo(tagDiary).ids() %}
    {# 上記 ID を連結 #}
    {% set excludeEntryIds = diaryEntryIds | join(', not ') %}
    {# それらを除外した残りのエントリを取得 #}
    {% set filterdEntries = craft.entries.section('article').id('and, not ' ~ excludeEntryIds).limit(100).all() %}
    {% for entry in filterdEntries %}
        {
        "title": "{{ entry.title }}",
        "date": "{{ entry.postDate|atom }}",
        "permalink": "{{ entry.url }}",
        "slug": "{{ entry.slug }}"
        }{% if loop.last %}{% else %},{% endif %}
    {% endfor %}
    ]
}

updateするようなので必要じゃない本文とかははずして、キーの判定に使うslug を入れておく。

こうすることで対象のエントリが取得できるので Feedme でインポートする設定でインポートの対象は slug を設定しておいて、 lightswitch のところは初期値 ON にしたうえで、初期値を使うでインポートする。

判定のキーは slug にすることでupdateができた。



今回の話とは関係なく、Feedmeで一括編集する時に、特定のタグを追加するとかはどうやってやるのがいいんだろうな。

リレーションになってるんだろうからその辺がどうやるのかを今度試してみよう。