我在我的网站(视频页面布局)使用的视频脚本中得到了这一点:
<div class="video-views pull-left">
{$videos[i].viewnumber|kilo} {if $videos[i].viewnumber == '1'}{t c='global.view'}{else}{t c='global.views'}{/if}
</div>相关视频部分使用Ajax进行“显示更多”按钮生成的视频页面布局。
我的问题是:我不知道如何在Ajax {$videosi.viewnumber|kilo}中转换"kilo“函数。我尝试了几件事,但都没有结果。
$code[] = '<div class="video-views pull-left">';
$views = ($video['viewnumber'] == '1') ? $lang['global.view'] : $lang['global.views'];
$code[] = $video['viewnumber']. ' '.$views;
$code[] = '</div>';发布于 2021-06-16 23:50:17
Kilo不是Smarty发行版中包含的修饰符,但如果您可以访问站点上的代码,则可以从插件文件中提取代码,它最有可能是在smarty/libs/plugins/modifier.kilo.php中。
看起来您正在使用PHP来构造对AJAX请求的响应,因此您可以提取代码并重用它。
如果您没有访问修改器文件的权限,则可以自行重新创建格式。根据上下文判断,它很简单,就像这样:
<?php
/**
* Format integers into human readable strings indicating number of thousands
* Example: 1200 -> 1.2K
* @param int $value
* @return string
*/
function kilo(int $value): string
{
// If the value is less than 1000, just return it
if($value < 1000)
{
return $value;
}
/*
* If the value is evenly divisible by 1000, we want to show a whole number,
* otherwise format it as a single precision float. Add "K" string literal
* to indicate thousands
*/
$formatString = ($value % 1000) ? '%.1fK':'%dK';
// Divide value by 1000
$value /= 1000;
// Return the formatted string
return sprintf($formatString, $value);
}
// Define some test data and echo the formatted values
$testViewCounts = [1, 123, 1230, 12300, 123000];
foreach($testViewCounts as $views)
{
// If only one view, do not pluralize
$label = ($views == 1) ? 'view':'views';
echo kilo($views).' '.$label.PHP_EOL;
}https://stackoverflow.com/questions/67998629
复制相似问题