SMARTY - stemmings - 产品数量(Prestashop)

问题描述:

我遇到以下问题。我正在使用Smarty模板引擎的Prestashop CMS中开店。所以有一个句子,显示了一些产品。现在 - 在英语很简单 - 你可以把它像:SMARTY - stemmings - 产品数量(Prestashop)

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

但这个店在波兰语语言所作的 - 有启动的问题。它更complicated.It的是这样的:

  1. 为1的产品,你有一个字 - “PRODUKT”
  2. 对于2,3和4产品,每包含这些 数字编号(如22,23, 24,32,33,34,152,153,154,242,243,244等) 另一个词 - “导航产品”
  3. 对于一切上述4(除了在点那些数字2)第三 词 - “produktów”

所以 - 如何为此写一个聪明的条件?

感谢

+0

只有我好奇,而不是答案。 Smarty是否要求您仅在一行上添加所有内容? – PeeHaa

我要说这里所需的逻辑是冗长不够,有可能重新使用足以保证一个插件。

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)}