我在smarty中遇到格式化变量问题.我想知道最好的方法是什么.基本上我有一个字符串"ABC | DEFGH"我想要聪明地获得"DEFGH"的子串我将如何去做这个?
{$var|substr:strpos:"|":strlen}
Run Code Online (Sandbox Code Playgroud)
不起作用
如何检查Smarty 2中是否存在文件?我的意思是这样的:
{assign var="module_js" value="/js/modules/{$module}.js"}
{if file_exists($module_js)}
<script type="text/javascript" src="{$module_js}"></script>
{/if}
Run Code Online (Sandbox Code Playgroud) 我有以下Smarty模板,其中显示了整个生成一些JavaScript的模板.
正如您所看到的,我在整个代码片段中打开{literal}和关闭{/literal}标记,这看起来有点混乱和不守规矩.是否有更好的方法来编写这个代码,如果将来必须更改代码,它将显得更整洁,更易于管理?
{literal}
<script type="text/javascript">
var _roi = _roi || [];
// Base Order Details
_roi.push(['_setMerchantId', '{/literal}{$merchant_id}{literal}']);
_roi.push(['_setOrderId', '{/literal}{$order_id}{literal}']);
_roi.push(['_setOrderAmount', '{/literal}{$order_total}{literal}']);
_roi.push(['_setOrderNotes', '{/literal}{$order_notes}{literal}']);
// Line Items
{/literal}
{foreach from=$line_items item=line name=items}
{literal}
_roi.push(['_addItem',
'{/literal}{$line.sku}{literal}',
'{/literal}{$line.title}{literal}',
'{/literal}{$line.category_id}{literal}',
'{/literal}{$line.category}{literal}',
'{/literal}{$line.price}{literal}',
'{/literal}{$line.quantity}{literal}'
]);
{/literal}
{/foreach}
{literal}
// Submit Transaction to SDC ROI tracker
_roi.push(['_trackTrans']);
</script>
<script type="text/javascript" src="{/literal}{$url}{literal}"></script>{/literal}
Run Code Online (Sandbox Code Playgroud) 我怎样才能获得第一个智能数组元素?
其实我知道怎么做...但我有以下问题.
我得到一个看起来像这样的数组
[DATA] => Array
(
[12] => Array
(
[content] => foobar
)
[1] => Array
(
[content] =>
)
[2] => Array
(
[content] =>
)
[3] => Array
(
[content] =>
)
//this is a snipit of {$myVar|@print_r}
Run Code Online (Sandbox Code Playgroud)
这一直持续到 [11]
由于某种原因,没有[0]和[12]在这个位置.
我不知道这是否总是12,但我知道它总是在第一个位置.
我不能对这个数组进行排序,因为有另一个数组具有相同的排序顺序,我必须保留此顺序以便以后输出.
有没有办法选择第一个元素而不使用array[0]或array.0?
信息:我正在开发的项目使用Smarty 2
编辑
- 如果我知道如何:)我会重新索引数组:)
为了解决这个问题,我{php}在smarty中打开,得到了我需要的数组,将它分成两个数组(当然重新索引它们就这样开始0).比我0 从每个数组临时保存pos 到临时数组.0用下划线(_)覆盖orig ,0然后将它们多重排序,将原始值放回并将它们传递回$this->_tpl_vars非常复杂的方式.(全部在tpl内)
{php}
// get …Run Code Online (Sandbox Code Playgroud) 我需要做出决定:
{math equation="x/y" x=$x y=$y} // $x = '2', $y = '3'
Run Code Online (Sandbox Code Playgroud)
如何在Smarty中完全将字符串转换为数字,因为我无法访问CMS的专有代码?感谢名单!
UPD:Smarty版本:2.6.18
我想知道是否可以使用Smarty 2做类似于循环的操作.
我想要这样的东西:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
Run Code Online (Sandbox Code Playgroud)
我应该使用什么功能?
我需要file_get_contents()在 smarty tpl 文件中使用 PHP 。我不能在 PHP 中使用它并将它分配给 smarty 模板。因为 URL 是通过 smarty 模板文件中的循环动态生成的。所以我使用 smarty 插件功能来完成这项任务。但我想知道是否有任何方法可以直接在模板文件中使用它,而不是从插件文件中解析它。
我附上了我用来实现这个功能的插件代码。请任何人让我知道如何直接在 smarty tpl 文件中使用它。
function smarty_function_getTitle($params)
{
if ($params['id']) {
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$params['id']);
parse_str($content, $ytarr);
return $ytarr['title'];
}
}
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码在 smarty 模板中调用它:
{getTitle id=$videoId}
Run Code Online (Sandbox Code Playgroud)
欢迎提出建议!