我想你的意思是smarty_modifier_inter()返回smarty代碼,你希望這個smarty代碼自己被解析? Smarty只會爲每個修飾符解析模板一次,所以它不會解析返回的smarty標籤(實際上我假設它會在原始模板體中運行所有函數,所以它不會解析任何返回的smarty標籤)。
實現你要找的東西的一種方法是在你的修改器中實現遞歸。說,例如,你的修改如下:
function smarty_modifier_inter($string)
{
$html = some_function($string); //This may contain a smarty tag, such as {$page->title|inter}
return $html;
}
你可以改變它的東西,如:
function smarty_modifier_inter($string)
{
$html = some_function($string); //This may contain a smarty tag, such as {$page->title|inter}
if (preg_match("/".preg_quote("{$")."/", $html)) { //A very quick and dirty way to see if there are any smarty variables within your template
$html = smarty_modifier_inter($html); //This may contain a smarty tag, such as {$page->title|inter}
}
return $html;
}
這將反覆運行smarty_modifier_inter到您的字符串,直到它不再含有Smarty的變量。顯然,這是非常容易無休止的循環,所以謹慎使用!
如果你確信那裏將是遞歸的一個級別,那麼你可以簡單地在你的數據上運行最多一次你的函數
你能澄清一下這個問題嗎?或者添加一個簡單的例子來說明它顯示什麼和應該顯示什麼? – Borgtex