Dreamweaverでhtmlタグを綺麗にする設定(ソースコードのフォーマット)

modxのtemplateを何種類か作り、フロント画面でボタンを押すことでユーザーがテンプレートデザインを切り替える方法を探していたが結局見つからず、自作したのでメモします。
■template
templateに白ベース、黒ベースのhtmlを作成済み
[2]black
[3]white
■リソース画面にボタンを配置します。
[[changeTPL]] <!-- チャンクの呼び出し -->
<form name="form" action="[~[*id*]~]" method="post">
<input type="submit" class="btn" name="subject" id="subject" value="白" />
<input type="submit" class="btn" name="subject" id="subject" value="黒" />
<input id="thisTPL" name="thisTPL" type="hidden" value="[*template*]" />
</form>
※フォームの内容をPOSTし、結果を同じ画面に返すことで反映させます。
※hiddenで現在使用中のテンプレート番号も一緒に渡します。
■チャンク
// inputのidがsubjectのvalue値を取得
$post = $_POST['subject'];
//inputのidがthisTPLのvalue値を取得(テンプレート番号)
$thisTPL = $_POST['thisTPL'];
//表示中のリソース番号を取得
$id = $modx->documentObject['id'];
//現在のテンプレートを取得し、切り替える
if($thisTPL == '2'){ //現在2 なら 3へ変更
if($post == "白"){
$tbl = $modx->getFullTableName("site_content");
$fields = array(
"template" => 3
);
$result = $modx->db->update($fields, $tbl, 'id = "' . $id . '"');
if( $result ) {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
header("Location:#");
exit;
}
}
}
}
【解説】
1.現在のテンプレートが2、つまり黒だったら、「白」を選択するボタンが押された場合、テンプレート番号3をmodxのDBへ格納する。
2.ページを更新しないと切り替えたテンプレートが読み込まれないので、ページをリロードする。(exitを書かないとループリロードになるので注意)
コメント
コメントを投稿