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}?
Zyx 13:07 on 2008-09-21 Permalink
Dobre stosunki z Rosją – tak, ale nie za cenę uległości. Przerabialiśmy to parokrotnie w historii i wiemy, czym to się kończy. Jeśli Moskwa nie potrafi zrozumieć, że jej wpływy i rządy kończą się na granicy Federacji, to ma problem sam ze sobą i mówi się trudno.
Sam konflikt w Gruzji trudno mi oceniać, ponieważ żeby zrozumieć tamtejszą sytuację, trzeba by nieco więcej poczytać o regionie.
MaKARON 13:14 on 2008-09-21 Permalink
W takim razie jak odniesiesz się do “przyjaźni z Hameryką”, względem której jesteśmy ulegli jak… nie znam w przyrodzie takiej uległości, a chciałem właśnie użyć porównania do świata zwierząt – a która to Hameryka nas conajmniej.. dyma :)