株式会社キャッチアップで働くエンジニアのブログです。

技術雑記

【baserCMS】古めのbaserCMS4系コンテンツ管理のleft,rightが壊れたときの治るかもしれない方法

Twitter bookmark Facebook LINE Pocket Feedly RSS

古めのbaserCMS4系 コンテンツ管理のleft,rightが壊れたときの治るかもしれない方法です。

最新のbaserCMS4系のバージョンはコンテンツ管理のバグがだいたい治っているのであまり起きませんが、初期の頃に設置して運営していたサイトなんかで時々起こっていた事がありその対応したときのまとめです。

例えば、過去のbaserCMSのバージョンでサブサイトのスマホ、モバイルを使わないからとサクッと消すと初期インストール状態のデータから left,rightが壊れたりしていた事もあり、リリース当初は大丈夫でもサイトが稼働しだして何年か後にコンテンツ管理がおかしい!というインシデントがありました\(^o^)/


※ 大前提:確実にもとに戻せないから作業前に必ずDBのバックアップを取ること。
 また、結局最後は手作業なんでコンテンツ管理の各フォルダを展開した状態の画面キャプチャもすべて撮っておくと良いです。

  1. TreeBehavior::recover や TreeBehavior::reorder を実行して left,rightを修復を試す
    $this->Content->recover(); とか適当な箇所に記述して実行
    ※ 並び順は変わるけど、left rghtの修復だとrecover()でだいたい整合性が取れるようになる事が多かったです。
    詳しくは https://book.cakephp.org/2/ja/core-libraries/behaviors/tree.html を読むと良いです。
  2. mysite_contents テーブルを確認
    特にurl、parent_id、lft、rght、level あたりをチェック
    後フラグ系も想定外になっていないかどうか (statusやself_statusみたいに2種類あるものがある)
  3. mysite_pages、mysite_content_folders、mysite_content_links テーブルの内容を確認
    (pageテーブルのidとcontentsテーブルのentity_idがずれていないか、など)
  4. 管理画面 ユーティリティのキャッシュ削除
  5. 管理画面 ユーティリティの固定ページ書き出し
  6. 管理画面 コンテンツ管理で並べ直す

    それでもだめだったら諦めてDBを元の壊れた状態に戻して
  7. 管理画面 ユーティリティのツリー構造リセット
    (Contentモデルに実装している処理)  
    ↑こちらは 階層構造(フォルダとか)がリセットされるので最後の手段として。
    コンテンツ多めのサイトや稼働中のサイトはツリー構造リセットやると茨の道です。

お約束

自己責任でお願いします!

必ず作業前にファイルやDBのバックアップをしましょう!

baserCMS関連書籍

Twitter bookmark Facebook LINE Pocket Feedly RSS