Czyj to jest prezydent?
Przy wejściu na onet od razu rzucił mi się w oczy artykuł “Prezydent: Będziemy bronić Gruzjii do upadłego”, po krótkiej chwili chwyciłem się za głowę i zacząłem się zastanawiać – co ten “nasz” Prezydent robi i dlaczego za wszelką cenę dąży do konfliktu (słownego/ekonomicznego/politycznego/zbrojnego – niepotrzebne skreślić) z Rosją? I tak na prawdę, na ile Polacy chcą bronić Gruzji? Oczywiście konflikt – jego idea, powód i rozwiązanie są bardzo skomplikowane – co więcej, nie znam kierunku, w którym powinny dążyć “narody zjednoczone”, żeby konflikt rozwikłać. Ale czy ja powinienem go znać? Nie, ja jestem zwykłym obywatelem tego kraju, którego prezyden pewnie niedługo wyśle na front.
Rzecz o stronach dynamicznych
Ajax wraz z web 2.0 zadomowił się w sieci na dobre. Czy to dobrze, czy to źle? Uczucia mam mieszane – na pewno warto zgodzić się z Jakob-em Nielsen-em, który stwierdził, że można jeszcze wiele poprawić w stronach “mniej dynamicznych” – w kwestii użyteczności. Dobrze zaprojektowana i zrobiona strona korzystająca z “dogrywania” bądź “wymiany” danych jest na pewno dobrym rozwiązaniem, problem pojawia się w miejscu, w którym projektant/programista zapomina o tym, że nie wszyscy będą mieli możliwość skorzystania z tych bajerów, które zrobił. …albo całkowicie zablokuje im możliwość korzystania ze strony.
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}?
Podcast downloader
Dziś publikacja następnego skryptu “automatyzującego” i ułatwiającego życie. Podcast_downloader ma w prosty sposób pobierać nowe mp3ki publikowane w RSSach podcastowych. Ja używam go do pobierania angielskich nagrań, którymi chcę podszlifować moją wiedzę (lista podcastów w paczce). Pobierz. Czytaj dalej »
Rapidshare downloader
Jakiś czas temu wykupiłem konto na rapidshare – miałem potrzebę uzupełnienia listy “plików” ;) [nikt nie przyzna się do piracenia]. Konto premium ma wiele zalet – i jedną wadę – trzeba za nie płacić. Ponieważ jestem typowym “centusiem” ograniczyłem się do jednego miesiąca. Niestety nie uzupełniłem kolekcji i pozostałe pliki musiałem ściągać z “free” – ono ma więcej wad, ale największa jest taka, że można pobierać tylko 1 plik jednocześnie. Powoduje to niepotrzebną stratę czasu przy pobieraniu kolejnych elementów większych kolekcji. Rozwiązanie? Skrypty :) Tylko jak pobierać pliki z radpishare?

