CMSのポテンシャルを引き出す─MODxで作る商用サイト

第9回 MODxとMySQLの関係 + おまけスニペット

この記事を読むのに必要な時間:およそ 8.5 分

はじめに

連載開始からしばらく経ちました。今では多くの皆さんが快適なMODxライフをお過ごしかと思います(笑)⁠一方で,既存サイトのコンテンツが多い,複雑といった事情から,なかなかMODxやCMSの導入に踏みきれない方もいらっしゃるのではないでしょうか?

今回は,バックエンドデータベースから見たMODxについて解説していきます。データベース側の構造を知ることで,既存サイトのコンテンツをひとつひとつコピー&ペーストし,管理画面から登録するのではなく,データベース側からサイトを半自動的にマイグレーションする,という手段を検討することができ,より効率的な運用管理を目指すことができるようになります。

前回紹介したように,MODx-2.1からはMS SQL Serverがサポートされるようになりましたが,実績の面からはMySQLを使う方が間違いなく無難です。今回もMySQLを前提とした解説を行っていきます。よろしくお付き合いください。

MySQLのテーブル構造

さっそくですが,本連載の1回目でMySQLを設定したように,MODxが持つテーブル情報を確認するには次のようにします。

MODxが使用しているテーブルの確認

# mysql -u root modx
mysql> show tables;
+------------------------------------+ 
| Tables_in_modx                     | 
+------------------------------------+ 
| modx_access_actiondom              | 
| modx_access_actions                | 
| modx_access_category               | 
| modx_access_context                | 
| modx_access_elements               | 
| modx_access_menus                  | 
| modx_access_permissions            | 
| modx_access_policies               | 
| modx_access_policy_template_groups | 
| modx_access_policy_templates       | 
| modx_access_resource_groups        | 
| modx_access_resources              | 
| modx_access_templatevars           | 
| modx_actiondom                     | 
| modx_actions                       | 
| modx_actions_fields                | 
| modx_active_users                  | 
| modx_categories                    | 
| modx_categories_closure            | 
| modx_class_map                     | 
| modx_content_type                  | 
| modx_context                       | 
| modx_context_resource              | 
| modx_context_setting               | 
| modx_document_groups               | 
| modx_documentgroup_names           | 
| modx_element_property_sets         | 
| modx_event_log                     | 
| modx_fc_profiles                   | 
| modx_fc_profiles_usergroups        | 
| modx_fc_sets                       | 
| modx_keyword_xref                  | 
| modx_lexicon_entries               | 
| modx_lexicon_topics                | 
| modx_manager_log                   | 
| modx_member_groups                 | 
| modx_membergroup_names             | 
| modx_menus                         | 
| modx_namespaces                    | 
| modx_property_set                  | 
| modx_register_messages             | 
| modx_register_queues               | 
| modx_register_topics               | 
| modx_session                       | 
| modx_site_content                  | 
| modx_site_content_metatags         | 
| modx_site_htmlsnippets             | 
| modx_site_keywords                 | 
| modx_site_metatags                 | 
| modx_site_plugin_events            | 
| modx_site_plugins                  | 
| modx_site_snippets                 | 
| modx_site_templates                | 
| modx_site_tmplvar_access           | 
| modx_site_tmplvar_contentvalues    | 
| modx_site_tmplvar_templates        | 
| modx_site_tmplvars                 | 
| modx_system_eventnames             | 
| modx_system_settings               | 
| modx_transport_packages            | 
| modx_transport_providers           | 
| modx_user_attributes               | 
| modx_user_group_roles              | 
| modx_user_messages                 | 
| modx_user_roles                    | 
| modx_user_settings                 | 
| modx_users                         | 
| modx_workspaces                    | 
+------------------------------------+ 
68 rows in set (0.00 sec) 

このように,MODx Revolutionは普段目に見えないところでたくさんのテーブルを使ってデータを管理,表示していることが推測できます。

テーブル名からも大体の用途が想像できるかもしれませんが,これらのテーブル名と用途を一覧にしてみましたので参考にしてみてください。中には語彙やコンテキストなど,読者の皆さんには意味不明な項目があるかもしれませんが,例のごとく次回以降ゆっくりと解説を行っていく予定です。言い訳になりますが,一部ドキュメントが整っていない&時間の都合で完全に内容を網羅することができませんでした。ご了承ください。

表1 テーブル名と用途

テーブル名内容
modx_access_actiondom詳細不明
modx_access_actionsアクションのアクセス設定
modx_access_categoryカテゴリのアクセス設定
modx_access_contextコンテキストのアクセス設定
modx_access_elementsエレメントのアクセス設定
modx_access_menusメニューのアクセス設定
modx_access_permissionsアクセスパーミッションの設定
modx_access_policiesアクセスポリシーの設定(権限管理→ユーザーグループとロールの管理→アクセスポリシー)
modx_access_policy_template_groupsアクセステンプレートのテンプレートグループ設定
modx_access_policy_templatesアクセスポリシーテンプレートの設定(権限管理→ユーザーグループとロールの管理→Policy Templates)
modx_access_resource_groupsリソースグループのアクセス設定
modx_access_resourcesリソースのアクセス設定
modx_access_templatevarsカスタムテンプレート変数のアクセス設定
modx_actiondom詳細不明
modx_actionsアクションの内容(システム→アクション)
modx_actions_fieldsアクションフィールドの内容
modx_active_users現在ログイン中のユーザ情報
modx_categoriesスニペットなどのカテゴリ情報
modx_categories_closure上記カテゴリの親子関係など
modx_class_mapドキュメントやリンク,スニペットなどのドキュメントクラス
modx_content_typeコンテンツタイプ(システム→コンテンツタイプ)
modx_contextコンテキスト(バーチャルドメインのようなもの)の内容
modx_context_resourceコンテキストのリソース
modx_context_settingコンテキストの設定
modx_document_groupsリソースグループとリソースの関係
modx_documentgroup_namesリソースグループの情報
modx_element_property_setsエレメントのプロパティセット
modx_event_logイベントログ
modx_fc_profiles管理画面カスタマイズのためのプロファイル
modx_fc_profiles_usergroups上記のユーザグループ設定
modx_fc_sets管理画面カスタマイズのためのセット
modx_keyword_xrefキーワードのクロスリファレンス?
modx_lexicon_entries語彙(gettextのようなもの)のキーと内容の対応
modx_lexicon_topics語彙のトピック情報
modx_manager_log管理者ログ
modx_member_groupsメンバーグループの情報
modx_membergroup_namesメンバーグループの名前や説明
modx_menusトップメニューの構成(システム→アクション)
modx_namespacesプラグインやスニペットのネームスペース
modx_property_set設定をまとめたプロパティセット(ツール→プロパティセット)
modx_register_messages登録時のメッセージ
modx_register_queues登録キュー
modx_register_topics詳細不明
modx_sessionMODxのログインセッション
modx_site_content各リソースの内容
modx_site_content_metatagsメタタグの管理。最近では使用されない。
modx_site_htmlsnippetsチャンクの内容
modx_site_keywordsキーワードの管理。最近では使用されない。
modx_site_metatagsメタタグの管理。最近では使用されない。
modx_site_plugin_eventsプラグインのイベント
modx_site_pluginsTinyMCEのようなプラグイン
modx_site_snippets独自スニペットやWayFinderのようなスニペット
modx_site_templatesテンプレート
modx_site_tmplvar_accessカスタムテンプレート変数のアクセス許可
modx_site_tmplvar_contentvaluesカスタムテンプレート変数の実データ
modx_site_tmplvar_templatesカスタムテンプレート変数とテンプレートの対応
modx_site_tmplvarsカスタムテンプレート変数の定義
modx_system_eventnamesプラグインなどが使用するシステムイベント名
modx_system_settingsシステム設定
modx_transport_packagesパッケージ情報
modx_transport_providersパッケージのプロバイダ情報
modx_user_attributesメールアドレスや氏名などのユーザ情報
modx_user_group_rolesグループロール
modx_user_messagesメッセージ
modx_user_rolesユーザロール
modx_user_settingsユーザ設定(権限管理→ユーザ管理→ユーザ→設定の内容)
modx_usersユーザ名,パスワードなどの認証情報
modx_workspacesMODxコアが使用するワークスペース

MODxの管理画面を操作する中で最も日常的に発生するのは,新規リソースの作成や編集です。リソースの作成前後でMySQLの構造を比較してみるとわかりますが,新規リソースを作成した場合にデータベース上で更新されるテーブルは「modx_site_content」です。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。

コメント

コメントの記入