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