Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty] Modyfikowanie wyniku funkcji.
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Mikoskay
Witam. Od dłuższego czasu szukam odpowiedzi na to pytanie, a że nic nie znalazłem, zwracam się do was. Mam zarejestrowaną funkcję...

  1. <?php
  2. $smarty->register_function('lang', 'smarty_translate');
  3. ?>

... i używam jej w szablonie ...

  1. {lang text='1 Comment'}

... co daje prawidłowy wynik ...

Cytat
1 komentarz

Problem pojawia się, gdy chcę zmodyfikować wynik funkcji za pomocą modyfikatora replace...

  1. {lang text='% Comments'|replace:'%':$post.comments}

... ponieważ replace modyfikuje parametr wysyłany do funkcji zamiast wyniku funkcji, który ma być wyświetlony. Co zrobić, żeby zmodyfikować wynik funkcji? Z góry dzięki,
heaven
Najlepiej zrobic od razu wszystko na bloku smarty ale skoro juz masz funkcje to po prostu zamknij ja w bloku. Mozesz tez do funkcji lang dodac ewentualne parametry np.
  1. {lang text='% Comments' old_text="%" new_text=$post.comments}


W oparciu o blok będzie to wyglądało tak...
  1. {str_replace old_text="%" new_text=$post.comments}
  2. {lang text='% Comments'}
  3. {/str_replace}


a tu jest kod bloku {str_replace ...}

  1. <?php
  2. function smarty_block_str_replace($param,$content,&$smarty) {
  3. if ($content != null)
  4. $content = str_replace($param['old_text'],$param['new_text'],$content);
  5. return $content;
  6. }
  7.  
  8. $smarty->register_block('str_replace', 'smarty_block_str_replace');
  9. ?>

nie sprawdzałem czy działa smile.gif ale chyba tak
Mikoskay
A ja wymyśliłem coś jeszcze prostszego... Po prostu:
  1. {lang|replace:'%':$post.comments text='% Comments'}

winksmiley.jpg
heaven
Faktycznie prostsze smile.gif. Nawet nie wiedzilem że tak można, ale jest to logiczne smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.