kviat
16-04-2006, 23:47
O ile wyświetlanie polskich liter w menu administratora "załatwia" usunięcie linii w administrator/components/com_virtuemart/header.php
$menu_code = htmlentities( $menu_code, ENT_NOQUOTES );
lub
//$menu_code = htmlentities( $menu_code, ENT_NOQUOTES );
(to znalazłem na forum)
to w opcji Sklep -> Edytuj sklep jest pole symbol waluty (Currency symbol), w którym po wpisaniu "zł" i zapisaniu zmian, w bazie zamienia to na "z³"
i od strony frontowej wyświetla jako "z3" (3 w indeksie górnym ofkors :))
Tabelą przechowującą symbol waluty jest "vm_vendor" i znalazłem, że funkcja odpowiedzialna za zmianę znajduje się w pliku:
administrator/components/com_virtuemart/classes/ps_vendor.php
function checkCurrencySymbol( $symbol, $convertToEntity=true ) {
$symbol = str_replace('&', '&', $symbol );
if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') {
return $symbol;
}
else {
if( $convertToEntity ) {
$symbol = htmlentities( $symbol, ENT_QUOTES, 'utf-8' );
if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') {
return $symbol;
}
// Sometimes htmlentities() doesn't return a valid HTML Entity
switch( ord( $symbol ) ) {
case 128:
case 63:
$symbol = '€';
break;
}
}
}
return $symbol;
}
Wykasowanie (lub "skomentowanie") linii:
//$symbol = htmlentities( $symbol, ENT_QUOTES, 'utf-8' );
daje pożądany efekt. W bazie zapisuje prawidłowo "zł" i wyświetla również prawidłowo od strony frontowej.
Pytanie do mądrzejszych: czy taka zmiana w tej funkcji nie spowoduje błędów w innym miejscu? Nie jestem biegły w PHP ale domyślam się, że taka konwersja miała czemuś służyć. Względy bezpieczeństwa? Coś innego?
Jeżeli nie wolno zmieniać tej funkcji to jak spowodować prawidłowe wyświetlanie symbolu "zł"?
$menu_code = htmlentities( $menu_code, ENT_NOQUOTES );
lub
//$menu_code = htmlentities( $menu_code, ENT_NOQUOTES );
(to znalazłem na forum)
to w opcji Sklep -> Edytuj sklep jest pole symbol waluty (Currency symbol), w którym po wpisaniu "zł" i zapisaniu zmian, w bazie zamienia to na "z³"
i od strony frontowej wyświetla jako "z3" (3 w indeksie górnym ofkors :))
Tabelą przechowującą symbol waluty jest "vm_vendor" i znalazłem, że funkcja odpowiedzialna za zmianę znajduje się w pliku:
administrator/components/com_virtuemart/classes/ps_vendor.php
function checkCurrencySymbol( $symbol, $convertToEntity=true ) {
$symbol = str_replace('&', '&', $symbol );
if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') {
return $symbol;
}
else {
if( $convertToEntity ) {
$symbol = htmlentities( $symbol, ENT_QUOTES, 'utf-8' );
if( substr( $symbol, 0, 1) == '&' && substr( $symbol, strlen($symbol)-1, 1 ) == ';') {
return $symbol;
}
// Sometimes htmlentities() doesn't return a valid HTML Entity
switch( ord( $symbol ) ) {
case 128:
case 63:
$symbol = '€';
break;
}
}
}
return $symbol;
}
Wykasowanie (lub "skomentowanie") linii:
//$symbol = htmlentities( $symbol, ENT_QUOTES, 'utf-8' );
daje pożądany efekt. W bazie zapisuje prawidłowo "zł" i wyświetla również prawidłowo od strony frontowej.
Pytanie do mądrzejszych: czy taka zmiana w tej funkcji nie spowoduje błędów w innym miejscu? Nie jestem biegły w PHP ale domyślam się, że taka konwersja miała czemuś służyć. Względy bezpieczeństwa? Coś innego?
Jeżeli nie wolno zmieniać tej funkcji to jak spowodować prawidłowe wyświetlanie symbolu "zł"?