首页 > 解决方案 > Smarty php - 如何将1000替换为1k等

问题描述

有什么办法可以代替这个:

<div>{math equation="x - y" x={$n.total_rating} y={$n.total_ratings}}</div>

例如,结果是1300以接收此1.3k,依此类推...

标签: javascriptphpsmarty

解决方案


尝试在 libs\plugins\modifier.num_format.php

<?php
/**
 * Smarty plugin
 *
 * @package    Smarty
 * @subpackage PluginsModifier
 */

function smarty_modifier_num_format($string) {
  if($string>1000) {
  $x = round($string);
        $x_number_format = number_format($x);
        $x_array = explode(',', $x_number_format);
        $x_parts = array('k', 'm', 'b', 't');
        $x_count_parts = count($x_array) - 1;
        $x_display = $x;
        $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : '');
        $x_display .= $x_parts[$x_count_parts - 1];
        return $x_display;
  }
  return $string;
}

并在主题文件中

{assign var="mynubers" value="{math equation="x - y" x={$n.total_rating} y={$n.total_ratings}}"}
{if $mynubers > '1000'}{$mynubers|num_format}{else}{$mynubers}{/if}

推荐阅读