a-blog cms案件のリニューアルで使えるSQLコマンド
2016年に導入したa-blog cms案件のリニューアルを担当しました。2016年9月のオープンから2019年9月まででお客様のほうで執筆された記事数は約1,000件。バージョンも2.1.1.1から2.10.19にバージョンアップすることにしました。
a-blog cmsはブロック型のエディタで出力されるタグが決まっているのが特徴ですので、リニューアルにあたり既存の記事のレイアウトが崩れるといったことは少ないですが、テーブルユニットやメディアユニットを導入したかったのと、過去の記事も問題なく移設できていることを確認したかったので、a-blog cmsの記事やカスタムフィールドのデータが保管されているデータベースを調査することにしました。
a-blog cmsではシンプルなデータベース構造になっており、SQLコマンドを発行することで使われていないユニットを調べたり、WYSIWYGで登録されている記事を調べたりすることができます。本記事では実際に使用したSQLを覚え書きします。
※言わずもがなですが、a-blog cmsの根幹部分を操作しますので、本記事を参考にSQLを発行する場合は自己責任でお願いいたします。
SQLを発行するには
データベースを確認するにはレンタルサーバなどで提供されているphpMyAdminやAdminerなどのツールを利用します。なければ公式サイトよりダウンロードしてインストールします。
情報を調べる
使用されているユニットを調べる
今回はマップユニットを削除しても良いかどうか検討しており、調べてみた結果、2記事でしか使用されていなかったので削除することにしました。
SELECT `column_type`, COUNT(*) FROM `acms_column` GROUP BY `column_type`
使用されているテキストタグを調べる
テキストタグを調査しました。見出し以外にリストを用意していたのですが、ほとんど使用されていないことがわかりました。また、定義リスト(dl)は一回も使用されていなかったので削除することにしました。
SELECT `column_attr`, `column_field_2`, COUNT(*) FROM `acms_column` WHERE `column_type` = "text" GROUP BY `column_attr`, `column_field_2`
テキストタグのうちtableタグが使用されているエントリーを調べる
tableタグに clear:both;
や width:100%;
があたっていたため、これを外してよいか調べるため、テキストタグのうちテーブルが使用されているものを調査しました。またVer. 2.7.0以降で搭載されたテーブルユニットに一本化することにしました。
SELECT `column_attr`, `column_field_2`, `column_entry_id` FROM `acms_column` WHERE `column_field_2` = "table"
メディアユニットが使用されているエントリーを調べる
ユニットのデザインを変えるため、ユニットが使用されている記事を確認することにしました。下記はメディアユニットが使用されているエントリーのIDを取得できます。Ver.2.10から強化されたメディア機能を採用するため、すでにメディアユニットが使われていないか調査しました。
SELECT `column_entry_id` FROM `acms_column` WHERE `column_type` = "media" GROUP BY `column_entry_id`
使用されているグループを調べる
グループで「4カラム」を用意していたのですが、実際に使用されているかどうか調べることにしました。結果4記事で使われていることがわかったのでそのまま残しておくことにしました。
SELECT `column_group`, COUNT(*) FROM `acms_column` GROUP BY `column_group`
コメントの最も多いエントリーを調べる
コメント欄が活用されているかどうか調べることにしました。直近の記事で最大で29件のコメントがあることがわかりました。
SELECT `comment_entry_id`, COUNT(*) FROM `acms_Comment` GROUP BY `comment_entry_id` ORDER BY COUNT(*) DESC
タグを調べる
使用されているタグをカンマ区切りで出力します。
SELECT `tag_entry_id`, GROUP_CONCAT(DISTINCT `tag_name` SEPARATOR ',') FROM `acms_tag` GROUP BY `tag_entry_id`;
情報を修正する
その他同様にデータの修正も可能です。
記事の日付を修正する
Ver 2.1.11以降は記事の一括編集機能が搭載されましたが、記事の日付をまとめて修正する場合は、下記のSQLで修正が可能です。
UPDATE `acms_entry` SET `entry_datetime` = "2020-01-24 00:00:00" WHERE `entry_id` > 45;
カスタムフィールドのnameを修正する
カスタムフィールドのnameをあとから修正するとき、新たにカスタムフィールドを作成してデータを移しなおすしかありませんが、SQLで修正が可能です。下記はcategory-name2で登録したカスタムフィールドを categoryName2 に修正する例です。
UPDATE `acms_field` SET `field_key` = 'categoryName2' WHERE `field_key` = 'category-name2';
タグの空白を削除する
Ver.2.10.0~2.10.7のバージョンで、エントリー更新時にタグに余分な半角スペースが挿入される不具合がありました。手作業での修正が不可能だったので下記のSQLで修正しました。
UPDATE `acms_tag` SET `tag_name` = TRIM(LEADING ' ' FROM `tag_name`);
アクセスログキーの場所を修正する
データベースをそのまま別のサーバに移動すると、Api_GoogleAnalytics_Ranking などを使っているとサービスアカウントキーのパスの指定が異なるためエラーが発生します。下記のSQLを発行すると手っ取り早く修正できます。
UPDATE `acms_config` SET `config_value` = '/var/www/html/projectname-************.p12' WHERE `config_key` = 'google_api_client_id_key_location';
以上、a-blog cms案件でSQL文を発行することで調査を行う方法でした。SQLを理解すると、校正オプションやグローバル変数の追加などできることの幅が広がります。今回は調査をメインにしたSQLでしたが、今後校正オプションやグローバル変数の活用事例も取り上げていきたいと思います。
コメント