2022.1.5|EC-CUBE

EC-CUBE(イーシーキューブ)でブロック要素が編集出来ないバグ(エラー)の修正方法

EC-CUBE(イーシーキューブ)でブロック要素が編集出来ないバグ(エラー)の修正方法

EC-CUBE(イーシーキューブ)では、古いバージョンを利用しているとバグやエラーが発生する場合があります。
管理画面から新着情報等のブロック要素を更新した際、編集や更新が出来なくなるバグ(エラー)が発生します。 【同じファイル名のデータが存在しています。別の名称を付けてください。】のメッセージが表示されます。
今回は、EC-CUBE(イーシーキューブ)でブロック要素が編集出来ないバグ(エラー)の修正方法を解説します。

EC-CUBEでブロック要素が編集出来ないバグ(エラー)の修正方法

このバグ(エラー)を修正するには「data」フォルダ内のファイルを修正します。
※Version 2.11.0

1.LC_Page_Admin_Design_Bloc.phpファイルのコードを修正

ブロック要素ファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

$this->arrBlocList = $this->lfgetBlocData("device_type_id = ?", array($device_type_id));
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$this->arrBlocList = $this->lfGetBlocData($device_type_id);

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。
※bloc_id が指定されている場合にはブロックデータの取得

$arrBlocData = $this->lfGetBlocData("bloc_id = ? AND device_type_id = ?",
                                    array($bloc_id, $device_type_id));
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$arrBlocData = $this->lfGetBlocData($device_type_id, "bloc_id = ?",
                                    array($bloc_id));

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

$arrBlocData = $this->lfGetBlocData("filename = ? AND device_type_id = ?",
                                    array($_POST['filename'], $device_type_id));
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$arrBlocData = $this->lfGetBlocData($device_type_id, "filename = ?",
                                    array($_POST['filename']));

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

* @param string $where Where句文 
* @param array $arrVal Where句の絞込条件値
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

* @param integer $device_type_id 端末種別ID
* @param string $where Where句文 
* @param array $arrVal Where句の絞込条件値

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

function lfgetBlocData($where = '', $arrVal = array()){
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

function lfGetBlocData($device_type_id, $where = '', $arrVal = array()){

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

return $objQuery->select("*", "dtb_bloc", $where, $arrVal);
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$sql_where = 'device_type_id = ?'; 
$arrSql = array($device_type_id); 
if (!empty($where)) { 
             $sql_where .= ' AND ' . $where; 
             $arrSql = array_merge($arrSql, $arrVal); 
 } 
return $objQuery->select("*", "dtb_bloc", $sql_where, $arrSql);

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

$arrChk = $this->lfgetBlocData("bloc_id = ? AND device_type_id = ?",
                               array($arrData['bloc_id'], $device_type_id));
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$arrChk = $this->lfGetBlocData($device_type_id, "bloc_id = ?",
                               array($arrData['bloc_id']));

上記と同じデザインファイルを開きます。
ファイルを開いたらコードを変更します。
/data/class/pages/admin/design/LC_Page_Admin_Design_Bloc.php

「LC_Page_Admin_Design_Bloc.php」ファイル変更前のコード

※ファイル内から以下のコードを探します。

$arrChk = $this->lfgetBlocData("filename = ?", array($array['filename']));
「LC_Page_Admin_Design_Bloc.php」ファイル変更後のコード

※ファイル内から上記のコードを探したら次のコードに書き換えてます。

$arrChk = $this->lfGetBlocData($array['device_type_id'], "filename = ?", array($array['filename']));

まとめ

EC-CUBE(イーシーキューブ)では、古いバージョンを利用しているとバグやエラーがいくつか出る恐れがあります。
出来る限り最新バージョンに切り替えることをおすすめします。