为什么我不能使用Smarty创建正确的URL?

问题描述

//Bad way...

 {assign var="article_id" value="`$article.category[0].article_id`"}
 {assign var="article_url" value="https://sample.com/detail/`$article_id`.html"}

 <a href="{$article_url}" target="_blank">Link to article</a>

$article.category[0].article_id

我可以获得数据“ 01209394909qs_A”。 我要删除“ _A”。

像这样的URL

https://sample.com/detail/01209394909qs.html

请告诉我删除“ _A”的好方法

解决方法

{assign var="article_id" value="`$article.category[0].article_id`"|substr:0:13}
{assign var="article_url" value="https://sample.com/detail/`$article_id`.html"}

<a href="{$article_url}" target="_blank">Link to article</a>
,

这是使用regex_replace修饰符的好地方。我们可以将下划线及其后的所有内容从文章ID中删除。我更喜欢使用capture在模板中组成字符串变量,但是如果需要,可以在分配给article_id var的过程中使用修饰符。

{capture assign="article_url"}https://sample.com/detail/{$article_id|regex_replace:"/\_(.*)$/"}.html{/capture}