Тема форума в зависимости от браузера

Идеи для расширения функциональности phpBB 2.0.x
Аватара пользователя
V.I.P.o2
phpBB 1.2.1
Сообщения: 25
Стаж: 18 лет 3 месяца
Откуда: Москва

Тема форума в зависимости от браузера

Сообщение V.I.P.o2 »

В эру мобильной связи всё чаще люди пользуются кпк и подобными устройствами для входа на сайты...
Только вот штука в том, что заходя по GPRS или очень кривому Wi-Fi не всегда высокая скорость...
На сайте имеется скин для мобильных устрайств, но основным естессно является скин для ББ, поэтому заходя с мобильного телефона, кпк и т.д. впервую очередь открывается именно он, а не мобильный...
Хотелось бы, иметь такой мод, который проверяя браузер клиента в случае мобильного устройства изменял бы оформление на мобильное... Соответственно добавить в профиль переключатель Изменять\Не изменять на мобильное оформление...На просторах интернета нашёл вот такой вот код и немного добавил, собственно как основа пойдёт:

Код: Выделить всё

$browsers = array( 
		"Windows CE", 
		"WebTV", 
		"AvantGo", 
		"Blazer", 
		"PalmOS", 
		"lynx", 
		"Go.Web", 
		"Elaine", 
		"ProxiNet", 
		"ChaiFarer", 
		"Digital Paths", 
		"UP.Browser", 
		"Mazingo", 
		"Mobile", 
		"T68", 
		"Syncalot", 
		"NetFront", 
		"Danger", 
		"Symbian", 
		"Nokia", 
		"Xiino", 
		"AU-MIC", 
		"EPOC", 
		"BlackBerry", 
		"Wireless", 
		"Handheld", 
		"Smartphone", 
		"SAMSUNG", 
		"320x240", 
		"PSP", 
		"J2ME", 
		"MIDP", 
		"Opera Mini" 
); 

if(preg_match('/('.implode('|', $browsers).')/i', $_SERVER['HTTP_USER_AGENT'], $match)) 
  { 
	if ( $userdata['user_id'] != ANONYMOUS )
	{
		// 1 - НОМЕР_МОБИЛЬНОГО_СКИНА
		$sql = "UPDATE " . USERS_TABLE . " 
			SET user_style = 1
			WHERE user_id = " . $userdata['user_id'];
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Ошибка в обновлении темы пользователя', '', __LINE__, __FILE__, $sql);
		}
		$userdata['user_style'] = "1";
	}
  }
Нужна реализация для гостей, иначе смысла в этом коде просто нет...
Так же нужно добавить возможность через админку указывать номер мобильного скина...
Ещё стоило бы подумать о сохранении темы пользователя в переменную, чтобы при заходе с ББ у него была нормальная, не мобильная тема...например так:

Код: Выделить всё

// Сохранение темы пользователя в переменную
// Вставить перед обновлением темы на мобильную через БД
$temp_user_theme = $userdata['user_style'];

// Возвращение темы пользователя
// Вставить в page_tail.php перед ?>
if ( $userdata['user_id'] != ANONYMOUS )
	{
		// 1 - НОМЕР_МОБИЛЬНОГО_СКИНА
		$sql = "UPDATE " . USERS_TABLE . " 
			SET user_style = " . $temp_user_theme . "
			WHERE user_id = " . $userdata['user_id'];
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Ошибка в обновлении темы пользователя', '', __LINE__, __FILE__, $sql);
		}
		$userdata['user_style'] = "1";
	}
Помогите доделать мод... реализацию мода с гостями придётся делать через куки, а как, понятия не имею...
Всё вроде как хорошо... или будет...
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 18 лет 2 месяца
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Сообщение RedNaxi »

а если еще сделать проверку по ретеаддр? если человек с серва миниоперы сидит то ему нужен могильный стиль... возвращение большого стиля можно сделать добавлением еще одного поля в профиль и в нем хранить... когда юзер агент один из перечисленных-ставить мобильный, когда нет-обычный стиль.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

V.I.P.o2 писал(а):реализацию мода с гостями придётся делать через куки
Посмотрите как это сделано в моде change style.

Только там есть небольшое неудобство: если вы потом удалите стиль, а у пользователя он в куках останется, то пользователь увидит ошибку и зайти не сможет. Я сделал, что бы просто если стиля который выбрал пользователь не существует, то его перекидывало на дефолтный.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
V.I.P.o2
phpBB 1.2.1
Сообщения: 25
Стаж: 18 лет 3 месяца
Откуда: Москва

Сообщение V.I.P.o2 »

Вот написал пробник... VVVas, реализацию куки там нашёл и позаимствовал, спс... есть ооооооочень большой минус... в профиле, не работает выбор: менять тему сайта при заходе с мобильного устройства или нет... тож самое в управлении пользователя через админку... помогите поправить...
Из плюсов:
- работает
- в админке есть выбор Id мобильной темы
Минус:
- Невозможно отключить через профиль (переключатель есть, настроен, но отказывается работать)

Код: Выделить всё

################################################################# 
## Mod Title:   PDA theme changer 
## Mod Version: 0.0.1
## Description: Changes usertheme of a forum on set at enter from
##              a browser of the mobile device. Based on Change style MOD.
## 
## Installation Level: Easy 
## Installation Time: 5-10 Minutes 
Добавлено спустя 2 часа 22 минуты 22 секунды:
RedNaxi писал(а):а если еще сделать проверку по ретеаддр? если человек с серва миниоперы сидит то ему нужен могильный стиль... возвращение большого стиля можно сделать добавлением еще одного поля в профиль и в нем хранить... когда юзер агент один из перечисленных-ставить мобильный, когда нет-обычный стиль.
А поподробней можно об этом? А то я только начал вникать...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Всё вроде как хорошо... или будет...
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

V.I.P.o2 писал(а):есть ооооооочень большой минус... в профиле, не работает выбор: менять тему сайта при заходе с мобильного устройства или нет... тож самое в управлении пользователя через админку... помогите поправить...
Costume Profile Field, посмотрите как там добавляются переключатели. Это который старый мод, инструкция написана немного не по стандарту, но вы думаю разберетесь. Смотрите папку с аддонами.

Добавлено спустя 22 секунды:
VVVas писал(а):если вы потом удалите стиль, а у пользователя он в куках останется, то пользователь увидит ошибку и зайти не сможет
Это учли?

Добавлено спустя 37 секунд:
RedNaxi писал(а):ретеаддр
Не понял этого слова.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 18 лет 2 месяца
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Сообщение RedNaxi »

сорри я с телефона... пропустил один слог... имелось в виду ремотеаддр - $_SERVER('REMOTE_ADDR') вроде так кроме скобок...те переменная в которой лежит ип...
кстати, имхо кастом профиль филдс здесь лишнее лучше просто сделать добавление поля в phpBB юзерс... вроде так проще будет.
еще вопрос, я пока не очень хорошо изучил структуру форума, в юзердата автоматически добавляются все поля из таблицы юзерс? если да то добавление поля напрямую в таблицу без модов облегчит немного работу имхо.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

RedNaxi писал(а):кстати, имхо кастом профиль филдс здесь лишнее лучше просто сделать добавление поля в phpBB юзерс...
А мод что делает? Я говорю про нормальный мод, а не про ограниченную лабудень с админкой.
RedNaxi писал(а):ремотеаддр - $_SERVER('REMOTE_ADDR')
А если у меня телефон это на большой комп транслирует? Нафиг мне легкий стиль? "Браузера клиента" почему не хватит?

Добавлено спустя 34 секунды:

Хотя как один из параметров определения вполне.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
V.I.P.o2
phpBB 1.2.1
Сообщения: 25
Стаж: 18 лет 3 месяца
Откуда: Москва

Сообщение V.I.P.o2 »

Про IP и сервак Миниоперы я до сих пор не понимаю... :roll:
VVVas, к сожалению пока не учёл, т.к. голова пока не соображает...не подстажешь, как проверку на существование стиля сделать?
+ Добавил наконец то в профиль возможность включения\выключения...
+ Прикрутил сохранение главной темы пользователя, правда слишком простенько сделал, но работает на ура...
+ Сократил код по максимуму...

- Пока нет, кроме отсутствия проверки на существование мобильной темы...

Добавить думаю в ближайшее время добавление\удаление названий мобильных браузеров через Админку...
Проверку устройства по расширению экрана...(яваскрипт буду мучать) ...

Код: Выделить всё

################################################################# 
## Mod Title:   PDA theme changer 
## Mod Version: 0.0.3
## Author:      V.I.P.o2 - http://highway.qwnet.ru/ 
## Description: Changes usertheme of a forum on setted at enter from
##              a browser of the mobile device. For guests it use 
##              cookies for users change the usertheme used. There 
##              is an opportunity to switch off through a profile.
## 
## Installation Level: Easy 
## Installation Time: 8-10 Minutes 
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Всё вроде как хорошо... или будет...
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

V.I.P.o2 писал(а):VVVas, к сожалению пока не учёл, т.к. голова пока не соображает...не подстажешь, как проверку на существование стиля сделать?
Она есть в change style. Посмотри внимательней, там просто если стиля нет то выводиться ошибка что-то типа "не могу найти/получить информацию о стиле". Вот тут вместо ошибки надо скидывать в дефолтный стиль и всё.
V.I.P.o2 писал(а):Про IP и сервак Миниоперы я до сих пор не понимаю...
Ну ты можешь получить инфу о том что человек пользуется браузеро миниопера. А в ней (как тут кто-то говорил) сразу включено/вшито чтоб конектилась она ко всем через проксик разрабов Opera. Так что как доп параметр определения стиля можно использовать условие прохождения запроса через этот проксик.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
V.I.P.o2
phpBB 1.2.1
Сообщения: 25
Стаж: 18 лет 3 месяца
Откуда: Москва

Сообщение V.I.P.o2 »

VVVas, а зачем ещё и по Ip проверять, если по агенту мод уже распознает мини оперу?

Этот код? Тут вроде про другое...

Код: Выделить всё

					// user logged in --> save new style ID in user profile
					$sql = "UPDATE " . USERS_TABLE . " 
						SET user_style = " . $theme['themes_id'] . "
						WHERE user_id = " . $userdata['user_id'];
					if ( !$db->sql_query($sql) )
					{
						message_die(CRITICAL_ERROR, 'Error updating user style', '', __LINE__, __FILE__, $sql);
					}
Всё вроде как хорошо... или будет...

Вернуться в «Запросы модов для phpBB 2.0.x»