バージョン選択

フォーラム

メニュー

オンライン状況

81 人のユーザが現在オンラインです。 (65 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 81
もっと...

サイト内検索

質問 > 管理機能 > 【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 OrderPdfService.php

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erukun
投稿日時: 2022/4/29 11:51
対応状況: 解決済
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 118
【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 OrderPdfService.php
[EC-CUBE] EC-CUBE 4.0.6-p1 正式版(公式DL版)
[レンタルサーバ] GMO Conohawingサーバ
[OS] Linux web0168.sh.tyo1 3.10.0-962.3.2.lve1.5.39.el7.x86_64 #1 SMP Thu Sep 17 06:10:33 EDT 2020 x86_64 [PHP] PHP 7.3.26
[データベース] MySQL 5.7.27-log
[WEBサーバ] Apache + nginx (バージョン確認方法が分かりません)
[ブラウザ] 有名どころ全て
[導入プラグインの有無] 有り

Amazon Payプラグイン(V2対応版) 1.1.0 AmazonPayV2 状態: 有効
お問い合わせ管理 for EC-CUBE4 1.0.5 ContactManagement4 状態: 有効
Coupon Plugin for EC-CUBE4 4.0.7 Coupon4 状態: 有効
Paidyプラグイン 1.0.5 Paidy4 状態: 有効
Securitychecker4 4.0.0 Securitychecker4 状態: 有効
商品レビュー管理プラグイン 4.0.2
U-KOMI 1.1.1 UKOMI4 状態: 有効
クロネコヤマト カード・後払い一体型決済サービス 1.2.1 YamatoPayment4  状態: 有効
EC-CUBE Ranking Plugin 1.0.1 Ranking 状態: 有効



納品書のカスタマイズがしたいです。
商品名がとても長いため、納品書の商品明細が1行で収まりません。


納品書(OrderPdfService.php)
493行目付近



foreach ($Shipping->getOrderItems() as $OrderItem) {
            if (!$Order->isMultiple() && !$OrderItem->isProduct()) {
                continue;
            }
            // class categoryの生成
            $classCategory = '';
            /** @var OrderItem $OrderItem */
            if ($OrderItem->getClassCategoryName1()) {
                $classCategory .= ' [ '.$OrderItem->getClassCategoryName1();
                if ($OrderItem->getClassCategoryName2() == '') {
                    $classCategory .= ' ]';
                } else {
                    $classCategory .= ' * '.$OrderItem->getClassCategoryName2().' ]';
                }
            }

            // product
            $productName = $OrderItem->getProductName();
            if (null !== $OrderItem->getProductCode()) {
                $productName .= ' / '.$OrderItem->getProductCode();
            }
            if ($classCategory) {
                $productName .= ' / '.$classCategory;
            }
            if ($this->taxExtension->isReducedTaxRate($OrderItem)) {
                $productName .= ' ※';
                $isShowReducedTaxMess = true;
            }



の$productNameを修正して、規格名除いた商品名のみ文字列数だけで19文字以上なら'…' 表示にして1行に収めることを希望します。

書き方がさっぱりなのですが、参考サイトはありますでしょうか?

お忙しいところ恐縮ですが何かしらヒントをいただけますと幸いです。
どうぞよろしくお願いいたします。


yt1969
投稿日時: 2022/4/29 12:28
対応状況: −−−
一人前
登録日: 2018/3/3
居住地:
投稿: 91
Re: 【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 OrderPdfService.php
mb_strimwidth

この関数でどうでしょう。

$productName = $OrderItem->getProductName();
$productName = mb_strimwidth($productName, 0, 40, "…");

とか
erukun
投稿日時: 2022/4/29 13:07
対応状況: 解決済
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 118
Re: 【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 OrderPdfService.php
お忙しい中ご回答ありがとうございます。
大変失礼いたしました。



$productName = mb_strimwidth($OrderItem->getProductName(), 0, 40, "…", 'UTF-8');




弊環境では文字化けするらしくて、第5引数に指定して期待した結果を出せました。本当にありがとうございます。助かりました。


SJIS(SHIFT-JIS)だとダメでした。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,720名です
総投稿数は109,953件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.