サポート

ページ一覧画面でオプションの値を変更する

tmp (2018/06/04 11:50)

設置URL : http://freo.jp

templates/internals/admin/page.html に
以下のような記述をいれたいと思っております。

<input type="text" name="page_associate.option[zaiko_color01][{$page.id}]" size="3" value="{$page_associates[$page.id].option.zaiko_color01}" />

■やろうとしてること
オプション名:zaiko_color01
ページ内のオプションの情報を、page一覧画面で、それぞれ入力、編集できるようにする。

■参考は・・・
<input type="text" name="sort[{$page.id}]" size="3" value="{$page.sort}" />

並び順の記述変更のタグがあったので真似してみました。
ですが、上手くいきません。

ページ個別編集画面でオプションをそれぞれいれるのではなく、ページ一覧画面にて、それぞれのページのオプションを一気に入力できると助かるなと思い、これをやろうとしています。

ccc (2018/06/05 23:08)

URL : http://cccabinet.jpn.org/

ページ内のオプションの情報を、page一覧画面で、それぞれ入力、編集できるようにする。

これを実現するには、これ用のフォーム(<form>~</form>)が必要になると思うのですが、そもそも templates/internals/admin/page.html のページ一覧では、ページ並び替えフォームとして <form>~</form> が使用されており、その中に入れ子として <form>~</form> を入れることはHTML的に(XHTMLも含めて)NGのようです。

かといって、並び替えのないエントリー一覧ならできる方法があるのかどうかはわかりません。

tmp (2018/06/06 16:52)

URL : http://freo.jp

ccc様
ありがとうございます。

もし、何かやり方があるのであればありがたいのですが。
色々試しましたが上手くいきません・・・

ミツ (2018/06/07 23:03)

URL : http://32877.xii.jp

こんにちは。
ページ管理画面のPHPではページの並び順のみを更新可能なように設定されていて、ページのオプションを変更できるようにはなっていないので、まずはそこの改造から必要です。

[freo/libs/freo/internals/admin/page_update.php]の45行目(並び順変更部分の直下)に、下記のように追加してください。

	if (isset($_POST['page_associates'])){
		//関連データ取得
		if (isset($_POST['page_associates'])) {
			foreach ($_POST['page_associates'] as $id => $page_associate) {
				if (is_array($page_associate)) {
					foreach ($page_associate['option'] as $option_id => $value) {
						$stmt = $freo->pdo->prepare('UPDATE ' . FREO_DATABASE_PREFIX . 'option_sets SET text = :value WHERE page_id == :page_id AND option_id == :option_id');
						$stmt->bindValue(':value',     $value);
						$stmt->bindValue(':page_id',   $id);
						$stmt->bindValue(':option_id', $option_id);
						$flag = $stmt->execute();
						if (!$flag) {
							freo_error($stmt->errorInfo());
						}
					}
				}
			}
		}
	}

また、[freo/templates/internals/admin/page.html]の101行目に

							<td><input type="text" name="page_associates[{$page.id}][option][オプションID]" size="3" value="{$page_associates[$page.id].option.オプションID}" /></td>

のようにして、オプション編集用のテキストボックスを追加してください。
テーブルの項目数を増やした分theadやtfootに列を追加しておいてください。

以上お試しください。

返信

  • この記事に返信します。
  • 返信の際は、設置URL以外の項目は入力必須です。
投稿フォーム
名前
設置URL
本文(本文の装飾について
編集キー(投稿した記事を編集する際に使用します。)
投稿キー(スパム対策に、投稿キー を半角で入力してください。)