価格も在庫も規格毎の情報になるので、価格が参照できている箇所であれば条件式ひとつで済むと思います。
以下のディレクトリ配下にあるファイルで価格を意識している部分price02(大文字小文字問わず)などで
しらみつぶしに調べ、価格表示部分を在庫ありの条件で囲んでやる形になると思います。
(price02は販売価格なので、周辺にほかにも価格に纏わる表示があればそこも修正してください。)
src/Eccube/Resource/template/default
⇒修正はこちらのファイルを直接修正せず、app/templateの方へコピーしたものに実施してください。
また、EC-CUBEオリジナル以外のテンプレートをご利用の場合は、defaultではなくて当該テンプレートの
配下をご確認ください。
app/Plugin
⇒プラグインの場合はtwigファイル以外にもphpのソースファイル中でtwig内の文字列置換やHTMLに介入しての
文字列置換をしている場合があるので、全体的に価格情報を参照している箇所を探して対処を行う必要があります。
修正方法ですが、
twig側では、{% if Product.stock_find %}...{% endif %}の条件下に入れてやります。
php側では、twigのコード部分であれば上記の通り。
プログラム部分なら、規格の変数(ProductClass※大文字小文字問わずだいたいこんな名前)が
あると思うので、if ($ProductClass->getStockFind()) { ... }の条件下に入れてやります。
【追記】上記は規格の話で、商品毎に判断する場合は、if ($Product->getStockFind()) { ... }の条件です。
$Product->getStockFind()は、各規格の在庫でひとつでも残っているもしくは無制限があればtrueを返します。
使い方は、それぞれ以下のファイルに使用箇所があるので、こちらを参照してください。
src/Eccube/Resource/template/default/Product/detail.twig
src/Eccube/Form/Type/AddCartType.php 【追記】$Product->getStockFind()を使っています。
以下、参考までにsrc/Eccube/Resource/template/defaultの下をprice02で検索した結果です。
余計なもの(class名等々)も含まれていますが、こんな感じのところから作業を始めることになります。
尚、プラグインについてはこちらでは無理なので、ご自分でご確認ください。(幅をとるので一部改行入れてます)
※eccube-3.0.9/src/Eccube/Resource配下で
$ grep -nir price02 *
admin/Order/search_product.twig:53: price = product['price02'];
admin/Order/search_product.twig:67: price = product['price02'];
admin/Order/search_product.twig:77: price = product['price02'];
admin/Product/product.twig:271: {{ form_label(form.class.price02) }}
admin/Product/product.twig:272: <div id="detail_box__price02" class="col-sm-3 col-lg-3">
admin/Product/product.twig:273: {{ form_widget(form.class.price02) }}
admin/Product/product.twig:274: {{ form_errors(form.class.price02) }}
admin/Product/product_class.twig:106: var price02 = $('#form_product_classes_0_price02').val();
admin/Product/product_class.twig:107: $('input[id$=_price02]').val(price02);
admin/Product/product_class.twig:217: <th id="result_box__header_price02">販売価格(円)</th>
admin/Product/product_class.twig:263: <td id="result_box__price02--{{ product_class_form.vars.name }}" class="price_cell">
admin/Product/product_class.twig:264: {{ form_widget(product_class_form.price02, {'attr': {'class': 'notmoney'}}) }}
admin/Product/product_class.twig:265: {{ form_errors(product_class_form.price02) }}
default/Mypage/favorite.twig:54: <dd id="favorite_list__price02_inc_tax--{{ Product.id }}" class="item_price">
default/Mypage/favorite.twig:55: {% if Product.price02_inc_tax_min == Product.price02_inc_tax_max %}
default/Mypage/favorite.twig:56: {{ Product.price02_inc_tax_min|price }}
default/Mypage/favorite.twig:58: {{ Product.price02_inc_tax_min|price }}~{{ Product.price02_inc_tax_max|price }}
default/Mypage/history.twig:106: {% if OrderDetail.product and OrderDetail.price_inc_tax != OrderDetail.productClass.price02IncTax %}
default/Mypage/history.twig:107: <dd id="detail_list__price02_inc_tax--{{ OrderDetail.id }}" class="text-danger">
default/Mypage/history.twig:108: <strong>【現在価格】{{ OrderDetail.productClass.price02IncTax|price }}</strong>
default/Product/detail.twig:135: {% if Product.getPrice02Min == Product.getPrice02Max %}
default/Product/detail.twig:136: <p id="detail_description_box__class_sale_price" class="sale_price text-primary"> <span class="price02_default">{{ P
roduct.getPrice02IncTaxMin|price }}</span> <span class="small">税込</span></p>
default/Product/detail.twig:138: <p id="detail_description_box__class_range_sale_price" class="sale_price text-primary"> <span class="price02_default
">{{ Product.getPrice02IncTaxMin|price }}</span> ~ <span class="price02_default">{{ Product.getPrice02IncTaxMax|price }}</span> <span class="small">税込</span></p>
default/Product/detail.twig:141: <p id="detail_description_box__sale_price" class="sale_price text-primary"> <span class="price02_default">{{ Product
.getPrice02IncTaxMin|price }}</span> <span class="small">税込</span></p>
default/Product/list.twig:119: {% if Product.getPrice02Min == Product.getPrice02Max %}
default/Product/list.twig:120: <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">
default/Product/list.twig:121: {{ Product.getPrice02IncTaxMin|price }}
default/Product/list.twig:124: <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">
default/Product/list.twig:125: {{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}
default/Product/list.twig:129: <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">{{ Product.getPrice02IncTaxMin|
price }}</dd>
プラグインを作ってrenderの共通処理で価格表示部分を上手く識別して条件で囲むようなことは
できるかも知れませんが、いずれにしてもパターンを調べないといけないので上記の箇所の調査は必要ですね。
だれか作っているひといますかね???
ちなみにこの価格非表示ですが、商品一覧画面で価格順に並べるとなんとなく価格がわかってしまう気がしますが
大丈夫でしょうか...