CSVを使ってテンプレート変数を一括作成

フォーマット化されたページ(支店ページや商品データベース等)をMODxで生成する場合、多くの入力項目(住所、連絡先、営業時間、地図の緯度・経度、…)が必要になりますが、それらは、テンプレート変数を多数作成することで実現できます。
その際、MODx管理画面から、ひとつ一つ、テンプレート変数を作成していっても良いのですが、これが結構な手間だし、人によってはたいへんなストレスになったりします。

テンプレート変数の定義データは、データベースでは、おおよそ(*1)「modx_site_tmplvars」テーブル1つですので、phpMyAdminを使って、単純にCSVをインポートすれば、一括で作成することができます。

■1.テンプレート変数定義ファイル(原本)の作成

Excel等の表計算ソフトを使って、テンプレート変数定義ファイル(原本)を作ります。

(1)まず、以下のフィールド名を1行目に並べます。(この順番通りに)

id
type
name
caption
description
editor_type
category
locked
elements
rank
display
display_params
default_text

※この1行目は、実際には使用しませんが、これが無いと入力しずらいですし、最初のカラム「id」が全行空欄だと、Excelcsv保存時に1カラム目を削ってしまうようですので。(この対策としては、「'」を入れておくという方法もありますが)

(2)2行目以降に必要な定義情報を埋めていきます。

id (空欄のまま:自動採番なので)
type 入力タイプ(「text」とか「image」とか…)
name 変数名
caption 見出し
description 説明
editor_type (空欄、もしくは「0」)
category カテゴリーID(※番号です)/デフォルト「0」
locked 変数をロック(ロックする:「1」)/デフォルト「0」
elements 入力時のオプション値
rank 並べ替え順/デフォルト「0」
display ウィジェット(「image」とか「delim」とか…)
display_params Widget プロパティ
(「&align=none&alttext=[+pagetitle+]」とか…)
default_text 既定値

※「type」と「name」は以外は、空欄でも問題はありません。

(3)保存します。(Excel等の形式で良いでしょう)

■2.DBインポート用のCSVの作成

(1)先ほど作った原本から、CSV形式で保存します。
   (Excelで開いているファイルは閉じておきます)

(2)エディタ等で開き、1行目を削除します。

(3)文字コードを「UTF-8」に変更して保存し直します。

■3.phpMyAdminでインポート

(1)「modx_site_tmplvars」テーブルを選びます。

(2)「インポート」を選びます。

(3)各項目を埋めていきます。

テキストファイルの位置 (先ほど作ったCSVファイル)
ファイルの文字セット utf8
インポートするファイルの形式 CSV
フィールド区切り記号 「,」カンマ(半角英記号)
フィールド囲み記号 (空欄、もしくはデフォルトの「"」)

(4)実行する。

■4.MODx管理画面を開いて確認

念のため確認して、終わり。

(*1)「テンプレートへのアクセス」「アクセス許可」は別のテーブルです。

              • -

【参考】テンプレート変数の「入力タイプ」の設定

text Text
rawtext Raw Text (deprecated)
textarea Textarea
rawtextarea Raw Textarea (deprecated)
textareamini Textarea (Mini)
richtext RichText
dropdown DropDown List Menu
listbox Listbox (Single-Select)
listbox-multiple Listbox (Multi-Select)
option Radio Options
checkbox Check Box
image Image
file File
url URL
email Email
number Number
date Date
              • -

【参考】テンプレート変数の「ウィジェット」の設定

datagrid Data Grid
floater Floater
marquee Marquee
richtext RichText
ticker Ticker
viewport View Port
htmlentities HTML Entities
date Date Formatter
unixtime Unixtime
delim Delimited List
htmltag HTML Generic Tag
hyperlink Hyperlink
image Image
string String Formatter