2023年1月30日に記事「当個人サイトの自作CMSの設計」を書いたばかりですが、早速CMSに大幅な変更を加えました。
前回の何が不満だったか、何は変わっていないか、メモとして残しておきます。
改善のきっかけ
- ページのメタ情報(スラッグと抜粋)を手動のCSVテキストで管理していたので、タイトルと抜粋が長くなると段々見にくくなってきた
- ページファイルとCSVファイルに同じ情報をコピーするのが効率悪く感じてきた
- 階層構造=ファイル名としたため、雑記のカテゴリーを気軽に変更できないのが問題になってきた
改善の方向性
- フラットファイルからSQLiteへ
- 管理画面におけるメタ情報の視認性を向上すると共に、SQLによる検索機能も付けられる
- ページ単位でのバックアップやローカル編集はできないが、ローカルでPHPは動くので管理に問題はない
- ページ階層からキーワードへ
- ページの親子関係を固定しようとすると変更がしにくいので、タグのような形式で尚且つ自由に追加できるフリーキーワードに
- 一覧ページの自動生成は見送り
- 不要な一覧まで生成させたくないが、生成させる一覧を別途指定するのは煩わしい
- 一覧はそのページ内で自由に区分けたり並べ替えたりしたい
- スラッグ手動指定はそのまま
- この先システムに変更があってもURLをそのままにするには、自動割り振りのID番号などではなく手動でスラッグを指定するのが妥当
どういう実装をしたか
DBファイルのテーブル
- タイトル
- ある程度単体でも概要がわかるタイトルを付ける(2022年→2022年のつぶやき)
- スラッグ
- 先々変えそうな情報は入れない(3選とかは4選になる可能性もあるなど)
- 日付
- 一覧表示で邪魔にならないように表示
- キーワード
- 親ページのように使いたい場合はその親ページのタイトルを含める
- 概要
- 一覧表示およびSNS用の抜粋として使用
- 本文
- 前回同様のマークダウン
- アイキャッチ
- 一応項目だけ作成、SNS用に使うことがあるかも
- 「非表示にする」チェックボックス
- 公開後一時的に非表示にしたい場合に
ページ作成・編集・削除の手順
- 管理画面にログイン
- 新規追加フォームより各種項目を入力(タイトルとスラッグは必須)
- submitするとすぐにページ生成が始まる
- 他ページからリンクさせる(スラッグ指定で一式出力できるタグあり)
- ページ編集
- タイトルとキーワードから編集対象のページを検索、リストから選ぶと編集フォームに移動する。後は上記と同じ。
- ページ削除
- 個別の編集フォームより削除。index用の特定スラッグも削除可能なので注意。
表示ページの生成の手順
- URLスラッグでページにアクセス
- DBよりスラッグを検索、無かったら404
- 各種ページ情報を返答
- パンくずリストはキーワードから生成(タグリストのような形式)
改善していきたい部分
- 万が一特定スラッグのデータを消してしまった時の為の挙動を考える
- アイキャッチを有効にする
- 管理ページでのページ検索方法を改善する(別テーブルでキーワードを抽出?)