CMSというものがあります。これはNetlifyでホスティングされた静的サイトに大してウェブ上で管理画面を提供するというものです。静的サイトをウェブ上で管理...?というと一瞬不思議に思いますが、ソースコード側とNetlify側をうまく連携させることによって、静的なサイトを管理することができます。上記のブログを管理しているGithubリポジトリ今回はHexoの環境でセットアップします。applicationsにアクセスし、アプリケーションを作成します。https://api.netlify.com/auth/doneを指定します。Secretを控えます。NetlifyとGithubを連携するNetlifyでHexoを運用する方法は省略。わかりやすい)Netlifyにホスティングの設定をした後、サイト一覧から自分のサイトの管理画面を選択し、Accessタブを選択します。secretを入力します。Netlify側の設定はこれで完了。Hexoの設定にファイルを追加する特にいじっていなければHexoの記事のソースコードはsource/に格納されています。ここにadminディレクトリを作成し、その中にindex.htmlとconfig.ymlを作成します。</script></body></html>Hexoの場合、source/_postsディレクトリはデフォルトですべてレイアウトが付加されてしまうので、Front-matterをつけることによって回避しています(HTMLでも有効なのですね...知らなかった)。CMS.registerPreviewStyleはつけなくてもいいのですが、つけておくとプレビュー時にWebと同じようなデザインで表示してくれます。}backendのrepoには自分がGithubで管理しているリポジトリの場所を指定します。collectionsは記事のテンプレートを定義します。CMSはHexoに依存しているわけでもないのでそれを使うわけではない模様。作成した記事が保存される場所。ユーザーがこのコレクションを使って記事を作成することの許可。通常はtrueのはず。日付の変数が使えますが、色々問題があるのでここではとりあえず{{slug}}。記事投稿のフィールド定義。ここに定義すると記事作成画面ではフィールド名に紐付いたフォームが表示されます。fieldsに似ていますが、表示されないデータ。このブログでは多くの記事にtagsが空であり、それによってエラーが発生しているのでとりあえず一時的に回避。fieldsですが、最低限、記事名と公開日、内容があれば良いように思えます。ほとんど設定を自分の設定ファイルからコピーしてきているので、使う人は適宜変更しましょう。その他Hexoではymlファイルは自動的にjsonに変換されてしまうので、Hexoの設定ファイルである_config.ymlを以下のように編集します。admin/config.yml先ほどのadmin/index.htmlも同様に回避できるかと思いましたが、なぜかうまく行かず。ローカルでテストするセットアップは完了です。startなどでローカルで試してみましょう。http://localhost:4000/adminにアクセスするとGithub認証ボタンが表示されると思います。OAuth後、一瞬Netlifyに飛び、すぐにまたadminに戻ってくると思います。unsweets.logの記事一覧がカード形式で表示されている。Blogを選択するとsource/_postsに入った記事一覧を取得します。内部でGithubからAPIアクセスして取得している模様(なのでローカルの一覧ではない)。編集画面はこんな感じ。CMSでの記事編集画面。2ペインで表示されており、左側にエディタ、右側にプレビューが表示されている。先ほどのconfig.ymlに沿った形式でFieldsに沿って表示されています。config.ymlのwidgetsに使える値もだいたい載ってます。後は公式のDocsを見るのも良いと思います。所感とか気になるところとか導入に少し手こずる記事一覧がファイル名ソートで見づらい編集画面で下書きがないconfig.ymlの設定が間違っていたりすると内部でJavaScriptがエラーを吐いて何も表示してくれない。consoleを見てもどこが間違っているか表示してくれない(あくまでもJavaScriptがエラー吐いてることくらいしかわからない)。Hexoのymlがjsonに変換されていることに気付きにくいファイル名が基本的に記事名依存なので、自由につけられない画像のパス関連が怪しい最後の2つは自分の設定がおかしいだけかもしれませんが、ちょっとうまくいっていないかん時。Alpha感のある使い心地。ローカルでわざわざエディタ立ち上げて、マークダウン書いて、プレビューして見て、コミットしてプッシュして...の手順を考えると、Web上で管理画面でぽちぽちやった方が気楽なのは大変助かります。