通过使用下面的PHP代码,我可以获取当前的URL并执行解析并获取字符串的一部分。但是这个代码并不支持我的smarty模板文件。我转换的智能代码是工作不正常。
php代码:
<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url_path=$url;
$parsed = parse_url($url);
$path = explode('/', $parsed['path']);
$resulturl = $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';
$outurl = $path[1];
?>
if ($outurl == "album") {
<h6>Sample text one </h6>
}
else
{
<h6>Sample text two </h6>
}
Smarty代码:
{php}
$url={$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}
$url_path=$url;
$parsed = parse_url($url);
$path = explode('/', $parsed['path']);
$resulturl = $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';
$outurl = $path[1];
{/php}
{if $outurl == 'album'}
<h6>Sample text one </h6>
{else}
<h6>Sample text two </h6>
{/if}
答案 0 :(得分:1)
你这样做错了。 Smarty用于将PHP操作与显示分开。你应该做的很简单:
PHP文件:
<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url_path=$url;
$parsed = parse_url($url);
$path = explode('/', $parsed['path']);
$resulturl = $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';
$outurl = $path[1];
$smarty->assign('outurl', $outurl);
Smarty模板文件:
{if $outurl == 'album'}
<h6>Sample text one </h6>
{else}
<h6>Sample text two </h6>
{/if}
现在不推荐在Smarty模板中使用{php}
标记,在当前版本中,您只能使用BC类而不是标准类。在您的情况下,我没有看到在Smarty模板中使用此标记的任何意义,因为您可以在PHP文件中简单地执行此操作并将$outurl
传递给模板文件。