Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Smarty][PHP] Polskie znaki
sebekzosw
post 5.08.2010, 13:26:56
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Witam!

Mam pewien problem z datą w Smarty i potrzebuje prostego rozwiązania, otóż mam taki zapis w pliku *.tpl:
  1. <div class="month">{$blog_last.unix_time|date_format:"%B"}</div>


i wyświetla mi się takie coś:
  1. <div class="month">sierpie</div>


Jak poprawić polskie czcionki w tym (najlepiej, jakby to było w Smarty poprawione)

Ten post edytował sebekzosw 5.08.2010, 18:51:49
Go to the top of the page
+Quote Post
krispak
post 5.08.2010, 13:33:46
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


Zakoduj plik smarty w UTF-8 bez bom


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
Go to the top of the page
+Quote Post
kilas88
post 5.08.2010, 13:34:13
Post #3





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


W obrębie całej strony masz UTF-8? W pliku szablonu, w pliku wyświetlającym szablon, w ustawieniach smarty, etc?
Go to the top of the page
+Quote Post
sebekzosw
post 5.08.2010, 13:54:23
Post #4





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


pracuje tylko i wyłącznie na UTF-8

Znalazłem takie coś:
http://www.smarty.net/forums/viewtopic.php?p=25287

ale ten kod nie działa i powoduje, że robi się takie coś:
  1. <div class="month">sierpie?</div>



---------------------

Mam rozwiązanie - tworzymy plik modifer.utf.php

z takim kodem:

  1. function smarty_modifier_utf ($string)
  2. {
  3. return iconv("ISO-8859-2", "utf-8", $string);
  4. }


po czym w Smarty:
  1. <div class="month">{$blog_last.unix_time|date_format:"%B"|utf}</div>


tylko pytanie, czy istnieje inne rozwiązanie tego bez tego modyfikatora?

Ten post edytował sebekzosw 5.08.2010, 14:06:25
Go to the top of the page
+Quote Post
kilas88
post 5.08.2010, 14:19:02
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


Możesz zmodyfikować: smarty\libs\plugins\modifier.date_format.php

Kod
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/

/**
* Include the {@link shared.make_timestamp.php} plugin
*/
require_once $smarty->_get_plugin_filepath('shared', 'make_timestamp');
/**
* Smarty date_format modifier plugin
*
* Type:     modifier<br>
* Name:     date_format<br>
* Purpose:  format datestamps via strftime<br>
* Input:<br>
*         - string: input date string
*         - format: strftime format for output
*         - default_date: default date if $string is empty
* @link http://smarty.php.net/manual/en/language.modifier.date.format.php
*          date_format (Smarty online manual)
* @author   Monte Ohrt <monte at ohrt dot com>
* @param string
* @param string
* @param string
* @return string|void
* @uses smarty_make_timestamp()
*/
function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '')
{
    if ($string != '') {
        $timestamp = smarty_make_timestamp($string);
    } elseif ($default_date != '') {
        $timestamp = smarty_make_timestamp($default_date);
    } else {
        return;
    }
    if (DIRECTORY_SEPARATOR == '\\') {
        $_win_from = array('%D',       '%h', '%n', '%r',          '%R',    '%t', '%T');
        $_win_to   = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
        if (strpos($format, '%e') !== false) {
            $_win_from[] = '%e';
            $_win_to[]   = sprintf('%\' 2d', date('j', $timestamp));
        }
        if (strpos($format, '%l') !== false) {
            $_win_from[] = '%l';
            $_win_to[]   = sprintf('%\' 2d', date('h', $timestamp));
        }
        $format = str_replace($_win_from, $_win_to, $format);
    }
    return iconv("ISO-8859-2", "utf-8", strftime($format, $timestamp));
}

/* vim: set expandtab: */

?>


Choć wydaje mi się, że powinno być zgrabniejsze rozwiązanie. Nawet osobny modyfikator jest chyba lepszym rozwiązaniem.
Go to the top of the page
+Quote Post
Spawnm
post 5.08.2010, 14:21:48
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę nadać sensowny tytuł.
Dodam też że temat polskich znaków był poruszany wielokrotnie dlatego zachęcam do korzystania z wyszukiwarki.
Go to the top of the page
+Quote Post
krispak
post 5.08.2010, 15:13:52
Post #7





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


Powiem Ci ze sam uzywam SMARTY - wszystkie pliki kodowane w UTF-8 bez bom i nie potrzebuje dodatkowych funkcji typu:
  1. function smarty_modifier_utf ($string)
  2. {
  3. return iconv("ISO-8859-2", "utf-8", $string);
  4. }

Pozdrawiam

Ten post edytował krispak 5.08.2010, 15:15:03


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
Go to the top of the page
+Quote Post
kilas88
post 5.08.2010, 20:48:24
Post #8





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


@krispak: to wklej do swojego szablonu poniższy kod i powiedz co Ci wypluje :-)

Kod
{'2010-08-05'|date_format:"%B"}


Ten post edytował kilas88 6.08.2010, 00:53:45
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:44