対象バージョン
CS-Cart 4.7.2-jp-1 以前のバージョン
概要
MySQL 8 のデータベースを使用してCS-Cartを使用すると、
ショップ画面や管理画面の商品で「SERVICE UNAVAILABLE」が表示される。
上記機能を追加するには以下の通り修正する必要があります。
修正方法
下記ファイルのSQLを修正してください。
バージョン 4.3.6 から 4.7.2 の場合:
- /app/functions/fn.catalog.php
$fields[] = 'groups.position AS group_position'; $join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id");下記のように修正してください。
$fields[] = 'pf_groups.position AS group_position'; $join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id");
- /app/schemas/last_view/frontend.functions.php
$sql = "SELECT b.row FROM " . "(SELECT product_id, @r := @r + 1 as row FROM"下記のように修正してください。
$sql = "SELECT b.row_position FROM " . "(SELECT product_id, @r := @r + 1 as row_position FROM"
バージョン 4.3.4 の場合:
- /app/functions/fn.catalog.php
$fields[] = 'groups.position AS group_position'; $join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id");下記のように修正してください。
$fields[] = 'pf_groups.position AS group_position'; $join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id");
- /app/schemas/last_view/frontend.functions.php
$product_position = db_get_field("SELECT a.row FROM (SELECT products.product_id, @r := @r + 1 as row FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);下記のように修正してください。
$product_position = db_get_field("SELECT a.row_position FROM (SELECT products.product_id, @r := @r + 1 as row_position FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);
バージョン 4.0.2 から 4.2.4 の場合:
- /app/functions/fn.catalog.php
$join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id"); $fields[] = 'groups.position AS group_position';下記のように修正してください。
$join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id"); $fields[] = 'pf_groups.position AS group_position';
- /app/schemas/last_view/frontend.functions.php
$product_position = db_get_field("SELECT a.row FROM (SELECT products.product_id, @r := @r + 1 as row FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);下記のように修正してください。
$product_position = db_get_field("SELECT a.row_position FROM (SELECT products.product_id, @r := @r + 1 as row_position FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);
----------------------------------------------------------------
※ お使いのCS-Cartのバージョン確認方法は、 こちら をご参照ください。