【问题标题】:SMARTY - stemmings - number of products (Prestashop)SMARTY - 词干 - 产品数量 (Prestashop)
【发布时间】:2015-05-08 02:56:10
【问题描述】:

我遇到了以下问题。我在 Prestashop CMS 上开店,它使用 Smarty 模板引擎。所以有一句话,展示了很多产品。现在 - 用英语很简单 - 你可以这样:

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

但这家商店是用波兰语制作的 - 问题就从这里开始了。它要复杂得多。它是这样的:

  1. 对于 1 个产品,您只有一个词 - “produkt”
  2. 对于 2,3 和 4 产品以及包含这些产品的每个数字 数字(如 22,23,24,32,33,34,152,153,154,242,243,244 等) 另一个词——“产品”
  3. 对于高于 4 的所有内容(第 2 点中的数字除外)第三 词 - “produktów”

那么 - 如何为此编写一个聪明的条件?

谢谢

【问题讨论】:

  • 只是我好奇而不是答案。 Smarty 是否要求您在一行中添加所有内容?

标签: php numbers smarty prestashop


【解决方案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)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2017-06-11
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多