バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erukun
投稿日時: 2022/4/29 11:51
対応状況: 解決済
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 81
【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 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
居住地:
投稿: 54
Re: 【納品書 カスタマイズ】文字列操作 商品名 商品明細 受注明細 OrderPdfService.php
mb_strimwidth

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

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

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



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




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


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


 



ログイン



統計情報

総メンバー数は74,626名です
総投稿数は104,055件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2074
6
yuh
1664
7
red
1498
8
h_tanaka
1188
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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