SDK 0.6 を npm に公開しました。0.4 以降(0.5・0.6)に管理画面側で提供を始めた機能に SDK を追随させ、型定義・メソッド・本文レンダリングを拡張しています。破壊的な API変更はありません(本文レンダリングの出力HTMLに追加があります。下記「レンダリングの変更」を参照)。
追加されたもの
posts.unlock(postType, slug, password) — パスワード保護された投稿の本文を、照合に成功したときだけ取得します。一覧・個別取得では保護中の投稿の body は null で返り、unlock
に正しいパスワードを渡すと本文入りの PostDetail が返ります。Post.is_password_protected — 保護中フラグ。一覧で鍵アイコンを出す、本文の代わりに入力フォームを表示する、といった出し分けに使えます。
Post.noindex / PostDetail.meta.robots — 投稿単位の検索エンジン制御。meta.robots は 'noindex' / 'noindex, nofollow' / null のいずれかで、値があるときだけ公開サイトが を出力します(noindex の投稿はサイトマップから除外する用途にも)。
FormFieldType に 'url' を追加 — フォームの入力項目に1行URL入力が使えるようになりました。あわせて各項目の placeholder も型に追加しています(cms.forms.get()
の項目定義で確認できます)。
レンダリングの変更(renderProseMirror())
本文の ProseMirror JSON を HTML 化する renderProseMirror() が、新しい本文要素に対応しました。メソッドのシグネチャは変わりませんが、出力されるHTMLが増えています。
本文画像に width / height 属性 — 画像ノードに表示寸法があれば
<img width height>として出力します。ブラウザがレイアウト確定前に領域を確保でき、CLS(レイアウトシフト)を抑えられます。画像キャプション — 画像に説明文があるとき
<figure><img …><figcaption>…</figcaption></figure>で囲みます(キャプションが無ければ従来どおり素の <img>)。で囲みます(キャプションが無ければ従来どおり素の )。
表(テーブル) —
<table>を出力します。列リサイズで設定された列幅は<colgroup><col style="width:…px">として反映されます。目次 — 本文に目次ノードがあると、見出しへアンカー用 id を振り、目次を
<nav data-table-of-contents>のリンク一覧として描画します。
画像を img { … } で直接スタイリングしていた場合、キャプション付き画像は figure > img になる点にご注意ください。表・画像まわりの見た目は各サイト側のCSSで調整してください。
アップグレード
0.3/0.4 系からそのまま更新できます。追加された型・メソッドは既存コードに影響しません。
npm install @sharedan/cms-sdk@^0.6パスワード保護の投稿を扱う場合の最小例:
const detail = await cms.posts.get('news', slug)
if (detail.is_password_protected && detail.body === null) {
// 入力フォームを表示し、送信されたパスワードで照合
const unlocked = await cms.posts.unlock('news', slug, password)
element.innerHTML = renderProseMirror(unlocked.body)
}▎ 変更点の全文は CHANGELOG を、型の詳細は APIリファレンス を参照してください。