Два варианта вывода профиля.

 
Посетитель
no avatar
Сообщений: 38
В общем делаю мультиязычный сайт. В данный момент реализую возможность вывода профиля пользователя на разных языках.
Для этих целей в таблице cms_users_fields добавил два поля 'title_en' и 'fieldset_en'. Где хранится английская версия наименования поля и группы полей.
В файле темы controllers/users/profile_view.tpl.php нашёл вызов метода cmsForm::mapFieldsToFieldsets($fields, function($field, $user), класса cmsForm. Нашёл его описание в файле system/core/form.php и переписал метод

public static function mapFieldsToFieldsets($fields, $callback=null, $values=null){
//Загружаем текущий язык
$config = cmsConfig::getInstance();
$language = $config->language;


$fieldsets = array();

$current = null;

$index = 0;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

$user = cmsUser::getInstance();

foreach($fields as $field){

if ($language == 'en') {
$field['title'] = $field['title_en'];
}


if (is_callable($callback)){
if (!$callback( $field, $user )) { continue; }
}

if (is_array($values)){
if (empty($values[ $field['name'] ])){ continue; }
}

//Англиская версия сайта
if ($language == 'en'){
if ($current != $field['fieldset_en']){

$current = $field['fieldset_en'];
$index += 1;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

}
}


//Русская версия сайта
if ($language != 'en'){
if ($current != $field['fieldset']){

$current = $field['fieldset'];
$index += 1;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

}
}


$fieldsets[ $index ]['fields'][] = $field;

}

return $fieldsets;


}

При нажатии на кнопку мой профиль всё выводится как надо, то есть при просмотре английской версии наименования полей выводятся на английском. Но при нажатии редактировать профиль, переводятся только наименования групп полей, а наименования полей не переводятся. Хотя используется тот же самый метод.

Подскажите в чём причина ?
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.