Приветствую
В прошлом посте Сквозная авторизация и единая база пользователей для 1.10.3. Я написал как вести общую таблицу пользователей и как сделать сквозную авторизацию.
Сейчас добавлю, как сделать так, чтобы поменяв аватар на одном сайте (поддомене) он корректно отображался на других (по просьбе Шадринец ). А не отображается он потому что прописаны относительные пути (/images/users/avatars) — по которым аватар открывается только на том сайте, на котором его закинули.
2. В функции получения аватара используем этот домен для формирования пути до картинки
3. В функцию установки нового аватара добавляем запись информации о домене
Таблица для всех сайтов одна — добавляем только в нее. ЕСЛИ префиск таблиц отличается, вставляем вместо "cms" свой.
2. Открыть файл \core\classes\user.class.php.
Найти в нем функцию getUserAvatarUrl.
а) Вместо
Добавить
б) Вместо
Добавить
3. Открыть файл \components\users\frontend.php
а) Вместо
Добавить
б) Вместо
Добавить
Перед заменой — обязательно сделать копии своих файлов. Для других версий инстанта можно руками поменять код в файлах.
В прошлом посте Сквозная авторизация и единая база пользователей для 1.10.3. Я написал как вести общую таблицу пользователей и как сделать сквозную авторизацию.
Сейчас добавлю, как сделать так, чтобы поменяв аватар на одном сайте (поддомене) он корректно отображался на других (по просьбе Шадринец ). А не отображается он потому что прописаны относительные пути (/images/users/avatars) — по которым аватар открывается только на том сайте, на котором его закинули.
Продолжим
Кратное описание изменений
1. добавляем колонку в таблицу профилей для хранения домена, на котором пользователь закидывает аватар2. В функции получения аватара используем этот домен для формирования пути до картинки
3. В функцию установки нового аватара добавляем запись информации о домене
Подробная инструкция
1. Нужно добавить в таблицу cms_user_profiles новую колонку
ALTER TABLE `cms_user_profiles` ADD `imageurl_host` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
2. Открыть файл \core\classes\user.class.php.
Найти в нем функцию getUserAvatarUrl.
а) Вместо
if (!$file_name){
if ($size == 'small'){ return '/images/users/avatars/small/'.$file_name; } else { return '/images/users/avatars/'.$file_name; }
$inDB=cmsDatabase::getInstance(); $host = $inDB->get_field('cms_user_profiles', 'user_id='.$user_id, 'imageurl_host'); if (!$host) {$host = 'http://'.$_SERVER['HTTP_HOST'].'/';} if ($size == 'small'){ return $host.'/images/users/avatars/small/'.$file_name; } else { return $host.'/images/users/avatars/'.$file_name; }
а) Вместо
$sql = "UPDATE cms_user_profiles SET imageurl = '{$file['filename']}' WHERE user_id = '$id' LIMIT 1";
$host = 'http://'.$_SERVER['HTTP_HOST'].'/'; $sql = "UPDATE cms_user_profiles SET imageurl = '{$file['filename']}', imageurl_host='$host' WHERE user_id = '$id' LIMIT 1";
$sql = "UPDATE cms_user_profiles SET imageurl = '$filename' WHERE user_id = '$id' LIMIT 1";
$host = 'http://'.$_SERVER['HTTP_HOST'].'/'; $sql = "UPDATE cms_user_profiles SET imageurl = '$filename', imageurl_host='$host' WHERE user_id = '$id' LIMIT 1";
Файлы для 1.10.3
СкачатьПеред заменой — обязательно сделать копии своих файлов. Для других версий инстанта можно руками поменять код в файлах.
Реклама #
PolarOne 10 лет назад #
А следующим шагом будут списки для модулей в админке? На каком поддомене показывать?) Хотя, наверное, это через позиции можно как-то попробовать...
SJen 10 лет назад #
Магазин себе уже обновил для двойки, на очереди "Проблемы и решения" - на сайте уже есть версия для двойки (доделываю)
Посмотреть можно тут. А потом регистрация и тд..
SE7EN 10 лет назад #
SJen 10 лет назад #
Шадринец 10 лет назад #
Oleg 10 лет назад #
SJen 10 лет назад #
нужно обращаться всего к одной табличке, смотрим первую инструкцию и после строки
Endroid 10 лет назад #