EC-CUBEでブロックを一括変更する

dtb_blocposition を操作することで対応できる。

device_type_id PC=10、携帯電話=1、スマートフォン=2
page_id トップページ=1、一覧ページ=2、詳細ページ=3、マイページ=4、その他カスタムで作成したページへID付与。(dtb_pagelayout参照)
target_id 0=Unused、1=LeftNavi、2=MainHead、3=RightNavi、4=MainFoot、5=TopNavi、6=BottomNavi、7=HeadNavi、8=HeaderTopNavi、9=FooterBottomNavi、10=HeaderInternalNavi (mtb_target参照)
bloc_id カテゴリー=1、利用ガイド=2、かごの中=3等。(dtb_bloc参照)
bloc_row カラム内でのブロックの表示優先順位。0は非表示で、target_idに5(未使用ブロック)が選択されている場合に設定可能。
filename カテゴリー=1、利用ガイド=2、かごの中=3等。(dtb_bloc参照)bloc_idと対応している。

ブロックIDを調べるには dtb_bloc を見る。

参考処理コード

<html dir="ltr" lang="ja">
<head>
<meta charset="UTF-8" />
</head>
<body>
<?php
include './data/config/config.php';

$db = mysql_connect(DB_SERVER.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query("SET NAMES utf8");
mysql_select_db(DB_NAME, $db);
$sql1 = "SELECT * FROM `dtb_category` WHERE `category_id` = '1'";
$rs1 = mysql_query($sql1,$db);
$item1 = mysql_fetch_assoc($rs1);
var_dump($item1);

// ページIDのMAX
$page_id_max = '37';
// 表示するカラムID
$target_id = '3';



$sql1 = "SELECT * FROM `dtb_blocposition`";
$rs1 = mysql_query($sql1,$db);

// UPDATE
while($item1 = mysql_fetch_assoc($rs1)){
	
	
	if( ( ($item1[bloc_id] == 6) || ($item1[bloc_id] == 3) || ($item1[bloc_id] == 8) || ($item1[bloc_id] == 2) || ($item1[bloc_id] == 10) ) && ($item1[device_type_id] == 10) ){
		
		
		// 表示順
		if($item1[bloc_id] == 6){
			$bloc_row = 0;
		}elseif($item1[bloc_id] == 3){
			$bloc_row = 1;
		}elseif($item1[bloc_id] == 8){
			$bloc_row = 2;
		}elseif($item1[bloc_id] == 2){
			$bloc_row = 3;
		}elseif($item1[bloc_id] == 10){
			$bloc_row = 4;
		}
		
		// 表示する
		$sql2 = "UPDATE `dtb_blocposition` SET `target_id` = '$target_id', `bloc_row` = '$bloc_row' WHERE `device_type_id`='10' AND `page_id`='$item1[page_id]' AND `bloc_id`='$item1[bloc_id]'";
		
	}else{
		// 表示しない(カラム)
		$sql2 = "UPDATE `dtb_blocposition` SET `target_id` = '0', `bloc_row` = '0' WHERE `device_type_id`='10' AND `page_id`='$item1[page_id]' AND `bloc_id`='$item1[bloc_id]'";
	}
	
	// echo $sql2.'<br>';
	
	$rs2 = mysql_query($sql2,$db);
}


// 該当ページの、該当ブロックの登録がない場合はINSERT


// 表示するブロックIDの配列
$array_block_id = array(6,3,8,2,10);

// 該当ページIDをループ
for($i = 0; $i <= $page_id_max; $i ++){
	$page_id = $i;
	
	for($a = 0; $array_block_id[$a] != ''; $a ++){
		$sql3 = "SELECT * FROM `dtb_blocposition` WHERE `device_type_id`='10' AND `page_id`='$page_id' AND `bloc_id`='$array_block_id[$a]'";
		$rs3 = mysql_query($sql3,$db);
		$item3 = mysql_fetch_assoc($rs3);
		// var_dump($item3);
		// echo '<br>';
		
		if($item3 == ''){
			
			// 表示順
			if($array_block_id[$a] == 6){
				$bloc_row = 0;
			}elseif($array_block_id[$a] == 3){
				$bloc_row = 1;
			}elseif($array_block_id[$a] == 8){
				$bloc_row = 2;
			}elseif($array_block_id[$a] == 2){
				$bloc_row = 3;
			}elseif($array_block_id[$a] == 10){
				$bloc_row = 4;
			}
			
			$sql4 = "INSERT INTO `dtb_blocposition` (
							`device_type_id`, `page_id`, `target_id`, `bloc_id`, `bloc_row`, `anywhere`
						) VALUES (
							'10', '$page_id', '$target_id', '$array_block_id[$a]', '$bloc_row', '0'
						)";
			// echo $sql4.'<br>';
			$rs4 = mysql_query($sql4,$db);
		}
	}
}


echo '処理完了!';


?>
</body>

</html>

コメントを残す