Do czego można używać {capture} w Smarty?

Ostatnio takie pytanie zadał mi znajomy podczas rozmowy na gg. Początkowo zdziwiło mnie to trochę, ale po głębszym zastanowieniu doszedłem do wniosku, że faktycznie ciężko z głowy podać przykłady sensownego użycia {capture}. Rzuciłem okiem do ostatniego projektu i znalazłem dwa najważniejsze użycia {capture} w Smarty:
* tworzenie treści popupów (HTML),
* tworzenie elementów wielokrotnego użycia.

W przypadku pierwszym przykład jest dość prosty:

{capture name="prodinfo"}
<table>
	<tr><th>Nazwa</th><td>{$item.product.name}</td></tr>
	<tr><th>Kod</th><td>{$item.product.code}</td></tr>
	<tr><th>Cena</th><td>{$item.product.price}</td></tr>
</table>
{/capture}

a poniżej używamy utworzonego HTMLa jako paramteru (powinno być właściwie
text=$smarty.apture.prodinfo|replace:’”‘:’”‘}, żeby uniknąć problemów w javascript):

<a href="/Procucts/1/"
  {popup text=$smarty.capture.prodinfo}>Product 1</a>

W drugim przypadku jest coś takiego (występuje w {foreach item=i}):

{capture name="pid"}pid-{$pro.id}-{$i.month}-{$i.year}{/capture}
<a href="javascript:ShowProduct( '{$smarty.capture.pid}' ); ">
  Pokaż produkt X</a>

co tworzy link do “jakiegoś produktu” – ta część zaś składa się z elementów tabeli dotyczących podsumowania samego produktu,
jak i wszystkich jego elementów:

<tr id="{$smarty.capture.prodid}" style="display: none;">
  <a href="/asdfasdf/">Wszystko dotyczące produktu X</a>
</td></tr>
<tr id="{$smarty.capture.prodid}-0">...</tr>
<tr id="{$smarty.capture.prodid}-1">...</tr>
...
</tr>

Przy czym javascriptowa funkcja ShowProductAndInfo() pobiera początek “id” dla zarówno linii produktu jak i pozostałych linii (robię for() od zera aż do pierwszego nie znalezionego elementu).

To najczęstsze moje użycie {capture} – a do czego Ty używasz {capture}?