soy shop アップロードした画像のパスにIDが入ってしまう。

SOY Shopに関する話題はこちら。

soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by matsu on 2019年5月02日(木) 14:36

お世話になっております。

さくらインターネットのスタンダードプラン+SOY CMS 3.0.2p127 +SOY Shop 1.18.2p154を利用し、
SOY ShopサイトIDに独自ドメインを当てております。
例)www.abc.com → /home/さくらのアカウント/www/サイトID

最近soy shopを1.17系から1.18.2p154へバージョンアップいたしましたが、
画像をアップロードするとサイトIDが付与されるようになり、画像がリンク切れになってしまい表示されなくなりました。

[今までの]商品画像をアップすると画像のパスは、/files/画像ファイル名.jpg
[バージョンアップ後]商品画像をアップすると画像のパスは、/サイトID/files/画像ファイル名.jpg

対処方法をご教授いただけると幸いです。
matsu
 
記事: 174
登録日時: 2012年12月30日(日) 14:17

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by inunosinsi on 2019年5月04日(土) 05:30

環境がなく詳しい検証が出来ないので一時しのぎの対応になりますが、

/CMSインストールディレクトリ/soyshop/webapp/src/domain/shop/SOYShop_Item.class.phpの334行目付近に

コード: 全て選択
function getAttachmentsUrl(){
   return soyshop_get_site_path() . "files/" . $this->getCode() . "/";
}


というコードがありますが、

コード: 全て選択
function getAttachmentsUrl(){
   $dir = soyshop_get_site_path() . "files/" . $this->getCode() . "/";
   if(strpos($dir, "/" . SOYSHOP_ID . "/") !== false) $dir = str_replace("/" . SOYSHOP_ID . "/", "/", $dir);
   return $dir;
}


このように書き換えると、ファイルのアップロード時にサイトIDが付与されなくなるはずです。

この修正で上手く動作したとして、
これを汎用的な機能にしたいので、

/CMSインストールディレクトリ/soyshop/webapp/conf/shop/以下にある「****.admin.config.php」の一つのファイルを差し支えない程度で結構ですので、内容をいただけないでしょうか

欲しい情報は3行目と四行目の
コード: 全て選択
define("****_SOYSHOP_SITE_DIRECTORY","*******************************************");
define("****_SOYSHOP_SITE_URL","**************************************");[/code]

こんな感じのコードが欲しいです。
身元がバレるようなコードは米印にしていただいて構いません。
大阪でフリーのプログラマをしています。
以前はSOY CMSの開発元で働いていました。

SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

最近はSOY Shopを業務アプリとして使用できないか?と模索しています。
SOY Shopで管理画面のみ使用モードを追加しました - saitodev.co

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 831
登録日時: 2008年6月12日(木) 20:48

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by matsu on 2019年5月04日(土) 13:52

ありがとうございます。

/CMSインストールディレクトリ/soyshop/webapp/src/domain/shop/SOYShop_Item.class.phpの334行目付近
を教えていただいたコードに書き換えてアップをし、
新規で商品を登録してみましたが、画像のアップロードができなくなりました。
エラーメッセージは下記のとおりです。

さくらアカウント.sakura.ne.jpの内容
failed to upload!
url=/files/test/test_1.jpg

バージョンアップ前から登録をしているサイト上(https://www.siteurl.com/)の画像は正常に表示されておりますが、
管理画面側の画像が全く表示されていない状態です。
サイトは独自ドメイン(https://www.siteurl.com/)で、
管理サイトはさくらのデフォルトのドメイン(さくらアカウント.sakura.ne.jp/cms/admin/)を利用しています。

下記がサイトID.admin.con.phpの3、4行目です。
define("サイトID_SOYSHOP_SITE_DIRECTORY","/home/さくらアカウント/www/サイトID/");
define("サイトID_SOYSHOP_SITE_URL","https://www.siteurl.com/");
matsu
 
記事: 174
登録日時: 2012年12月30日(日) 14:17

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by inunosinsi on 2019年5月05日(日) 06:02

対応した分を戻して、

/CMSインストールディレクトリ/soyshop/webapp/src/base/func/common.php の596行目付近にある

コード: 全て選択
function soyshop_convert_file_path_on_admin($path){
    if(!strlen($path)) return $path;

    if(strpos(SOYSHOP_SITE_URL, $_SERVER["HTTP_HOST"]) === false && strpos(SOYSHOP_SITE_URL, "/" . SOYSHOP_ID) === false){
        $path = "/" . SOYSHOP_ID . "/" . $path;
    }
    return $path;
}




コード: 全て選択
function soyshop_convert_file_path_on_admin($path){
//    if(!strlen($path)) return $path;
//
//    if(strpos(SOYSHOP_SITE_URL, $_SERVER["HTTP_HOST"]) === false && strpos(SOYSHOP_SITE_URL, "/" . SOYSHOP_ID) === false){
//        $path = "/" . SOYSHOP_ID . "/" . $path;
//    }
    return $path;
}


のようにコメントアウトして表示がどのようになるかお伝え下さい。
これで問題ないようであれば、今回頂いたconf.phpの内容に合わせてコードを検討致します。
大阪でフリーのプログラマをしています。
以前はSOY CMSの開発元で働いていました。

SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

最近はSOY Shopを業務アプリとして使用できないか?と模索しています。
SOY Shopで管理画面のみ使用モードを追加しました - saitodev.co

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 831
登録日時: 2008年6月12日(木) 20:48

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by matsu on 2019年5月05日(日) 09:46

ありがとうございます。
管理サイトの商品詳細の画像が表示されるようになりましたが、
商品一覧ページの画像が表示されません。
画像のパスを見ると
https://www.siteurl.com/im.php?src=/サイトID/files/201904161610/r0008629.jpg&width=60
となっております。
matsu
 
記事: 174
登録日時: 2012年12月30日(日) 14:17

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by inunosinsi on 2019年5月05日(日) 12:07

申し訳ございませんが、im.phpの方に対応する余力がありませんので、
通常のcms:id="smail_image"のようなタグをご利用をお願い致します。
大阪でフリーのプログラマをしています。
以前はSOY CMSの開発元で働いていました。

SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

最近はSOY Shopを業務アプリとして使用できないか?と模索しています。
SOY Shopで管理画面のみ使用モードを追加しました - saitodev.co

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 831
登録日時: 2008年6月12日(木) 20:48

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by matsu on 2019年5月05日(日) 12:15

ご返信ありがとうございます。
独自ドメインサイト側の商品一覧ではなく、
管理サイトの商品タブメニューを開いて表示される、商品一覧のサムネイル画像のことです。

ただここは表示されなくても問題ありませんので、解決ということでありがとうございました。
matsu
 
記事: 174
登録日時: 2012年12月30日(日) 14:17

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by inunosinsi on 2019年5月05日(日) 12:28

/CMSインストールディレクトリ/soyshop/webapp/pages/_common/Item/ItemListComponent.class.php 42行目付近の

コード: 全て選択
$this->addImage("item_small_image", array(
    "src" => SOYSHOP_SITE_URL . "im.php?src=" . $imagePath . "&width=60",
));




$this->addImage("item_small_image", array(
"src" => "/" . SOYSHOP_ID . "/im.php?src=" . $imagePath . "&width=60",
));


に修正してみると如何でしょうか?
大阪でフリーのプログラマをしています。
以前はSOY CMSの開発元で働いていました。

SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

最近はSOY Shopを業務アプリとして使用できないか?と模索しています。
SOY Shopで管理画面のみ使用モードを追加しました - saitodev.co

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 831
登録日時: 2008年6月12日(木) 20:48

Re: soy shop アップロードした画像のパスにIDが入ってしまう。

投稿記事by matsu on 2019年5月05日(日) 12:36

ありがとうございます!
表示されました。
matsu
 
記事: 174
登録日時: 2012年12月30日(日) 14:17


Return to SOY Shop

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[2人]