最初のうちはテンプレートにデータを渡したり、ループさせたりでこと足りますが、複雑なアプリになると対応できなくなってきます。そこでテンプレートの分離です。
$smart->display(テンプレート);
では単純に表示でしたが、
$html1=$smart->fetch(テンプレート);
でテンプレートに変数が入った状態で変数として受け取ります。
これをさらに別のテンプレートへ渡して最終的なページにするという処理で複雑なページでも対応できます。
特にサンプルはありませんが、流れとしては
というった簡単な流れです。
デバックもしやすく、管理が簡単になります。