kiki707さん。
なるほど、TV多いといちいち整合性を保って入力するのは大変ですよね。
ただ推測するに商品IDが一意のキーになりうるのであれば、私ならこうしますというのを書いてみます。
1.まずMODxのデータベースに下記のようなテーブルを作成します。内容は別途CSVファイルをphpMyAdminなどを使ってテーブルにアップロードして格納しましょう。
CREATE TABLE `modx_userdef_products` (
`productID` int(9) NOT NULL default '0', --商品ID
`productName` varchar(50) NOT NULL default '', --商品名
`price` int(20) NOT NULL default '0', --値段
`description` varchar(200) default NULL, --説明
`maker` varchar(200) default NULL, --メーカー
`image` varchar(200) default NULL, --画像ファイル名
PRIMARY KEY (`productID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品テーブル';
2.TVに[*productID*]だけ定義します。上記の例で言うなら入力タイプはNumberです。
3.残りのデータベースフィールドをページに呼び出すには、スニペットを定義します。商品名を表示するスニペットは以下のとおり。
[[productName]]
$productTVName = "productID";
$productTableName = "userdef_products";
$productIDFieldName = "productID";
$productNameFieldName = "productName";
$productID = $modx->getTemplateVar($productTVName);
if($productID === false) return;
$rs = $modx->db->query("SELECT `".$productNameFiledName."` FROM "
.$modx->getFullTableName($productTableName).
." WHERE `".$productIDFieldName."` = ".$productID.";");
if($modx->db->getRecordCount($rs)) {
$row = $modx->db->getRow($rs);
return $row["$productNameFiledName"];
}
return;
4.後は使用するフィールド分、スニペットを作ります。以上
こうすればドキュメントごとに、商品IDを入力するだけというテンプレートも作れるでしょう。
こういうやり方もありますと言う例です。