Skocz do zawartości

SMARTY


dargre`

Rekomendowane odpowiedzi

Wciąż jestem słaby w smarty i proszę o podpowiedź.

Mam zmienną smarty $count o wartości powiedzmy = 7

Jak w pliku tpl (smarty) zapętlić mały kod, np. linka pomiędzy 0 a 7 ??

w PHP to mogłoby tak wyglądać:

for($i=0; $i<=7; $i++) {

$link="link".$count."html";

echo "<a href=\"$link\">LINK$link</a><br>

}

można też przy pomocy:

while ( $i <= $count) {

$count++;

}

Jak to zrobić w smarty?

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

1) Możesz utworzyć w php dane w tablicy i przejść przez nią w szablonie za pomocą {foreach}

3) Możesz w php wykonać pętle "wydrukowane" w ten sposób dane przechwycić funkcjami buforującymi typu ob_start() i wyświetlić klasycznie w szablonie $smarty->assign("dane",$dane); w tpl {$dane}

3) Możesz w końcu skorzystać z {php} {/php} i w szablonie wstać kod php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

1) Możesz utworzyć w php dane w tablicy i przejść przez nią w szablonie za pomocą {foreach}

3) Możesz w php wykonać pętle "wydrukowane" w ten sposób dane przechwycić funkcjami buforującymi typu ob_start() i wyświetlić klasycznie w szablonie $smarty->assign("dane",$dane); w tpl {$dane}

3) Możesz w końcu skorzystać z {php} {/php} i w szablonie wstać kod php

Te wszystkie możliwości akurat znam. Ale chciałem elegancko w SMARTY, bo mod ma póść do ludzi. W końcu po co używać SMARTY, jeśli wewnątrz będzie dużo {php}{/php}...

Z szablonem też kłopot, bo sama wartość COUNT już jest przypisana do innej tablicy smarty.

Tak teraz przepatruję sobie dokumentację SMARTY i znalazłem coś takiego:

{section name=customer loop=$custid}

{/section}

można też tu wstawić wartości dla start,step,max

ale jeszcze nie doszedłem do tego jak wyświetlić mój kod.

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Praktyczna implementacja :)

<?
for($i=0; $i<=7; $i++) {
$dane[]=$i;
}
$smarty->assign('dane',$dane);
?>
{* szablon.tpl *}
{foreach from=$dane item=dane}
<a href="strona{$dane}.html">Link {$dane}</a> |		
{/foreach}

ob_start();
for($i=0; $i<=7; $i++) {
$link="link".$i.".html";
echo '<a href="'.$link.'">LINK '.$i.'</a> | ';
}
$dane = ob_get_contents();	
ob_end_clean();
$smarty->assign('dane',$dane);

{* szablon.tpl *}
{php}
for($i=0; $i<=7; $i++) {
$link="link".$i.".html";
echo '<a href="'.$link.'">LINK '.$i.'</a> | ';
}
{/php}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

dagre zainteresuj się tagiem section smartyego, którym dokłądnie zrobisz to co potrzebujesz :)

mion podał kod dla foreacha, przerób to na section zadając parametr max=7 :)

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

Mion, dzięki za kod, ale nie nadaje się do mojego przypadku.

Wartość "7" w pliku szablonu jest zmienną smarty obieraną z tablicy.

Czyli nie mogę sobie wpisać po prostu "7".

Dla mnie to jest {$link.PAGES} = tu jest przechowywana wartość count.

I nijak tego w tagach {PHP}{/PHP} można zastosować.

Zaraz popróbuję z tagiem {section}. Wydaje się idealny dla mnie, chociaż pierwsza próba mi nie wyszła...

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Prawdę powiedziawszy to nie wiem o co Ci chodzi z tym siedem. :)

Może napisz jeszcze raz na czym polega istota problemu__

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

zastostuj w section max=$pages gdzie $pages będzie trzymać liczbę linków :)

Wreszcie sobie poradziłem. Z tym "max" chyba nie do końca masz rację

Wartość liczbową do której chcę zapętlić pokazywanie kodu linku przechowywana jest w tablicy smarty $link.PAGES

Więc zrobiłem to tak:

{section name=page loop=$link.PAGES start=0 max=10}

<a href="link-{$smarty.section.page.rownum}.html">link-{$smarty.section.page.rownum}</a>

{/section}

i przy tym ile razy pętla jest wykonana decyduje wartość $link.PAGES. Max jedynie ogranicza pętlę do max 10 wyników.

O co mi chodziło? siteampa LinkForever.net

Oficjalnie jeszcze funkcjonuje stara sitemapa, zbudowana trochę na około. Podany link już działa tak jak chciałem. W tablicy smarty $link trzmam dane: URL, TITLE i ILOŚĆ STRON w danej kategorii. Ta ilość stron to właśnie $link.PAGES, i z niej trzeba utworzyć linki do podstron subkategorii.

Jeszcze jedna sprawa. Jest w SMARTY taka funkcja: {$jakis_tekst|indent:20}

Czy to funkcjonuje dla linka? Czyli <a href="costam.html">{$jakis_tekst|indent:20}</a>

Mnie nie wychodzi...

[uWAGA] Link może się zawieszać. Łącze z MySql na i365 jest fatalne. Będę chyba przenosił.

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności