0

次の問題があります。Smarty テンプレート エンジンを使用する Prestashop CMS でショップを作成しています。つまり、いくつかの製品を表示する文があります。今-英語でそれは簡単です-あなたはそれを次のようにすることができます:

{l s='Cart contains'} {$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}

しかし、この店はポーランド語で作られています - そこから問題が始まります。はるかに複雑です。次のようになります。

  1. 1 つの製品には、「製品」という 1 つの単語があります。
  2. 2、3、4 個の製品、およびそれらの番号を含むすべての番号 (22、23、24、32、33、34、152、153、154、242、243、244 など) の場合、別の単語 - 「製品」
  3. 4 を超えるすべてのもの (ポイント 2 の数字を除く) の 3 番目の単語 - "produktów"

では、このためのスマートな条件をどのように書くのでしょうか?

ありがとう

4

1 に答える 1

1

ここで必要なロジックは十分に冗長であり、プラグインを保証するのに十分再利用される可能性があります。

function smarty_modifier_nb_products_to_str($nbProducts){
   if($nbProducts > 1){
      $numbers = str_split((string) $nbProducts);
      return count(array_intersect($numbers, array('2','3','4'))
        ? 'produkty'
        : 'produktów';
   } else {
     return 'produkt';
   }
}

次のような使い方で:

{l s='Cart contains'} {nb_products_to_str($productNumber)}
于 2011-11-14T20:21:36.103 に答える