SOYSHOP の子商品ある場合のパンクズエラー 投稿する
投稿者:kaiya
投稿日時:2026-06-06 10:24:51
お世話になります。
SoyShop でストアを運用しているサイトで2点の不具合を見つけたので報告します。
①は SOY CMS本体(管理基盤)側、②は SoyShop側
の問題です。手元のOSS(SOY CMS 3.23.7 / SoyShop
2.13.14)でソースを追って原因の当たりまでつけました。行番号はローカ
ル版基準なので本番との照合をお願いします。
①【SOY CMS本体】管理画面ログイン時にDeprecatedエラーが表示される
SOY CMSの管理画面ログインで、画面上部に以下が3
行表示されます(管理者3名分):
Deprecated: Creation of dynamic property Administrator::$sites is
deprecated in
.../cm_s__soy/common/logic/admin/Administrator/AdministratorLogic.cl
ass.php on line 107
原因: PHP 8.2 以降で動的プロパティへの代入が非推奨化。AdministratorL
ogic.class.php:107 の $entities[$key]->sites = $siteList;
で、Administrator クラスに宣言のない $sites に代入しているため。
対応案: Administrator ドメインクラスに public $sites; を宣言(または
#[\AllowDynamicProperties] 付与)。
②【SoyShop】商品グループの子商品パンくずで、親商品リンクのドメインが
消える
SoyShopのパンくずプラグイン(common_breadcrumb)で、子商品ページ(例
https://www.winecellar-ya.com/item/detail/sb75.html)のパンくず内、
親商品へのリンクが https://zero_classpremium.html/ のように
ドメイン(winecellar-ya.com)が抜けた壊れたURL になります。
原因: SoyShopの
webapp/src/module/site/common/breadcrumb_navigation.php(2.13.14
では :103)の親URL生成:
$parentUrl = soyshop_get_site_url()
.
soyshop_get_page_object($parent->getDetailPageId())->getUri()
. "/" . $parent->getAlias();
古い商品で親商品の getDetailPageId()
が無効値を返すと、soyshop_get_page_object() が空 Page
を返し、getUri() が空文字になります。すると soyshop_get_site_url()
が返す / と末尾の /alias が連結して先頭が
//alias(ダブルスラッシュ)
になり、ブラウザがこれをプロトコル相対URLと解釈して alias
をホスト名扱いするため、ドメインが消えます。
発生条件: SOYSHOP_SITE_URL 末尾スラッシュ付き + 親商品の
detailPageId が未設定/無効。
対応案: getUri() が空のときのガード(detailPageId
のフォールバック、または連結時のスラッシュ正規化で // を防ぐ)。
なお、テンプレート側の
は仕様通りで、このタグ1つが「親商品リンク > 子商品名」をまとめて出
力する設計です。テンプレートの問題ではなく、上記URL生成側の問題です
-------
とOPUS4.8で調査した内容をお伝えします
SoyShop でストアを運用しているサイトで2点の不具合を見つけたので報告します。
①は SOY CMS本体(管理基盤)側、②は SoyShop側
の問題です。手元のOSS(SOY CMS 3.23.7 / SoyShop
2.13.14)でソースを追って原因の当たりまでつけました。行番号はローカ
ル版基準なので本番との照合をお願いします。
①【SOY CMS本体】管理画面ログイン時にDeprecatedエラーが表示される
SOY CMSの管理画面ログインで、画面上部に以下が3
行表示されます(管理者3名分):
Deprecated: Creation of dynamic property Administrator::$sites is
deprecated in
.../cm_s__soy/common/logic/admin/Administrator/AdministratorLogic.cl
ass.php on line 107
原因: PHP 8.2 以降で動的プロパティへの代入が非推奨化。AdministratorL
ogic.class.php:107 の $entities[$key]->sites = $siteList;
で、Administrator クラスに宣言のない $sites に代入しているため。
対応案: Administrator ドメインクラスに public $sites; を宣言(または
#[\AllowDynamicProperties] 付与)。
②【SoyShop】商品グループの子商品パンくずで、親商品リンクのドメインが
消える
SoyShopのパンくずプラグイン(common_breadcrumb)で、子商品ページ(例
https://www.winecellar-ya.com/item/detail/sb75.html)のパンくず内、
親商品へのリンクが https://zero_classpremium.html/ のように
ドメイン(winecellar-ya.com)が抜けた壊れたURL になります。
原因: SoyShopの
webapp/src/module/site/common/breadcrumb_navigation.php(2.13.14
では :103)の親URL生成:
$parentUrl = soyshop_get_site_url()
.
soyshop_get_page_object($parent->getDetailPageId())->getUri()
. "/" . $parent->getAlias();
古い商品で親商品の getDetailPageId()
が無効値を返すと、soyshop_get_page_object() が空 Page
を返し、getUri() が空文字になります。すると soyshop_get_site_url()
が返す / と末尾の /alias が連結して先頭が
//alias(ダブルスラッシュ)
になり、ブラウザがこれをプロトコル相対URLと解釈して alias
をホスト名扱いするため、ドメインが消えます。
発生条件: SOYSHOP_SITE_URL 末尾スラッシュ付き + 親商品の
detailPageId が未設定/無効。
対応案: getUri() が空のときのガード(detailPageId
のフォールバック、または連結時のスラッシュ正規化で // を防ぐ)。
なお、テンプレート側の
は仕様通りで、このタグ1つが「親商品リンク > 子商品名」をまとめて出
力する設計です。テンプレートの問題ではなく、上記URL生成側の問題です
-------
とOPUS4.8で調査した内容をお伝えします
投稿者:齋藤毅
投稿日時:2026-06-08 14:10:19
ご連絡を有難う御座います。
新しいバージョンにすればエラーメッセージは解消されるかもしれません。
こちらですが、コードを確認しましたところ、いつのバージョンかわかりませんが既に対応されていました。①【SOY CMS本体】管理画面ログイン時にDeprecatedエラーが表示される
新しいバージョンにすればエラーメッセージは解消されるかもしれません。
投稿者:齋藤毅
投稿日時:2026-06-08 14:23:16
こちらは指定した商品の商品詳細ページを削除した等で発生する可能性がありまして対策したものをダウンロード出来るようにしました。②【SoyShop】商品グループの子商品パンくずで、親商品リンクのドメインが消える
https://saitodev.co/soycms/soyshop/
投稿者:kaiya
投稿日時:2026-06-11 11:53:47
ありがとうございました。正しく表示されるようになりました。