Автоопределение мобильного браузера

Board index phpBBex 1.x Мастерская

Description: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Moderator: Поддержка

Post #1by NO SWEAR » 25.08.2013, 15:55

Как обещал выкладываю описание как сделать автоопределение мобильного браузера. Нам понадобится отредактировать всего 2 файла session.php и posting.php.

Открываем includes/session.php и ищем:

Code: Select all
function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      if ($this->data['user_id'] != ANONYMOUS)

Нашли, заменяем на:

Code: Select all
function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      // phpBB_mobile_detect - Mobile Stlye Redirect MOD
         $this->data['is_mobile'] = false;
         include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
         $this->data['is_mobile'] = mobile_device_detect();

         if ($this->data['is_mobile'] == true)
         {
            $style = 3;
            $this->data['is_mobile'] = true;
         }
      // phpBB_mobile_detect End

      if ($this->data['user_id'] != ANONYMOUS)
ps:поправил. действительно строчка потерялась. прошу прощения за сие недоразумение.

Далее в этом же файле ищем:

Code: Select all
if (!empty($_GET['style']) && $auth->acl_get('a_styles') && !defined('ADMIN_START'))

Нашли, заменяем на:
Code: Select all
// Setup for ?style=# to work for style viewing.
      // if (!empty($_GET['style']) && $auth->acl_get('a_styles') && !defined('ADMIN_START'))
      if (!empty($_GET['style']))

Далее открываем файл posting.php и ищем:
Code: Select all
// Parse Attachments - before checksum is calculated
   $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh);

   // Grab md5 'checksum' of new message

Нашли, заменяем на :
Code: Select all
// Parse Attachments - before checksum is calculated
   $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh);

   // phpBB_mobile_detect - Mobile Stlye Redirect MOD
   if ($user->data['is_mobile'] && $mode != 'edit' && !$preview  && !$refresh)
   {
      include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
      $status = mobile_device_detect();

      $message_parser->message .= "\n\n[size=85][b][i][ Отправлено с " . $status[1] . " ][/i][/b][/size] [img]http://yoursite.com/phpBB3/images/mobile/" . $status[1] . ".png[/img]";
   }
   // phpBB_mobile_detect End

   // Grab md5 'checksum' of new message

И осталось самое малое:
1) Для того чтобы отображался стиль тот что вам необходим для мобильного стиля, нужно в файле session.php в строчке с
Code: Select all
$style = 3;
вместо цифры 3 вставить цифру соответвующую нумерации стиля на вашем форуме.
2) И второе изменение для полной адаптации к вашему форуму:
в файле posting.php в строчке
Code: Select all
$message_parser->message .= "\n\n[size=85][b][i][ Отправлено с " . $status[1] . " ][/i][/b][/size] [img]http://yoursite.com/phpBB3/images/mobile/" . $status[1] . ".png[/img]";
Заменить путь http://yoursite.com/phpBB3/images/mobile/ на путь ведущий http://ваш_сайт.com/ваш_форум/images/mobile/ либо http://yoursite.com/images/mobile/

Так же необходимо распаковать этот архив в ваш форум
root.rar
(89.7 KiB) Downloaded 426 times
он добавит мини картинки мобильных для отображения при размещении сообщений.
Выглядит это так:
25.08.png
25.08.png (3.28 KiB) Viewed 8751 times

И еще один файлик для работы автопределения.

И конечно же, как вы спросите , надо же добавить кнопку для возврата в стандартный стиль. Для этого вам необходимо добавить в нужное место что то вроде этого

Code: Select all
<li><a href="/index.php?style=1" class="menu-link main"><span>Полная версия</span></a></li>


Ну и конечно я не автор этого мода, я лишь расписал всё что нужно сделать, с необходимыми правками для работы мода на форуме. Ссылка на форум создателя есть на этом форуме но я уже не буду копировать ее сюда тк кому надо тот найдет. Работа этого мода проверена на моем форуме. За мобильный стиль был взят стиль Artodia "art_mobile_iphone" так как мне он больше понравился.Вы конечно можете использовать тот стиль что подходит Вам. Кому хочется взглянуть на работу мода, ссылка под аватаркой.
Last edited by NO SWEAR on 20.09.2013, 09:54, edited 3 times in total.
NO SWEAR M
Topic author, Гуру
Avatar
Age: 40
Reputation: 95
With us: 4 yaers 11 months

Post #2by nurgaf » 25.08.2013, 20:20

NO SWEAR, Спасибо большое за сдержанное обещание! :wink: :clap:
А если что, кому нужна тема мобильной версии форума вот - /viewtopic.php?t=692. :smoke:
Надеюсь VEG в следующих версиях BBex сделает это штатной плюшкой :idea: :yes:
nurgaf M
Гуру
Avatar
Age: 20
Location: г.Челябинск
Reputation: 65
With us: 4 yaers 3 months

Post #3by shvager » 29.08.2013, 12:39

NO SWEAR wrote:Открываем includes/session.php и ищем:

КОД: ВЫДЕЛИТЬ ВСЁ
function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      if ($this->data['user_id'] != ANONYMOUS)

Нашли, заменяем на:

КОД: ВЫДЕЛИТЬ ВСЁ
function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      // phpBB_mobile_detect - Mobile Stlye Redirect MOD
         $this->data['is_mobile'] = false;
         include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
         $this->data['is_mobile'] = mobile_device_detect();

         if ($this->data['is_mobile'] == true)
         {
            $style = 3;

У меня после этой правки - 500 ошибка :sad:
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #4by Sumanai » 29.08.2013, 15:29

Архив распаковали?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #5by nurgaf » 17.09.2013, 20:51

Parse error: syntax error, unexpected T_ELSE in /home/bh49402/ci-forum.ru/includes/session.php on line 1637
Файлы записал, архив на месте..
nurgaf M
Гуру
Avatar
Age: 20
Location: г.Челябинск
Reputation: 65
With us: 4 yaers 3 months

Post #6by Sumanai » 17.09.2013, 21:12

Похоже на неправильное внесение правок или конфликт с другим модом. Какие ещё моды стоят?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #7by nurgaf » 18.09.2013, 10:45

Пустой phpbbex без модов, попробую залить чистые файлы и сделать по новой, вдруг, возможно сам накосячил, но это наврятли)
nurgaf M
Гуру
Avatar
Age: 20
Location: г.Челябинск
Reputation: 65
With us: 4 yaers 3 months

Post #8by shvager » 19.09.2013, 17:50

Sumanai wrote:Архив распаковали?
Канечно)) Перепроверял правки несколько раз... Все так же... только после первой правки в session.php - сразу 500 ошибка. :sad:
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #9by VEG » 19.09.2013, 18:47

Если 500 ошибка, то смотрите в логах ошибок сервера подробности — там обязательно будет написано, почему именно вываливается 500 ошибка.
С наилучшими пожеланиями, Евгений
VEG M
Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 3 months

Post #10by shvager » 19.09.2013, 19:27

Code: Select all
PHP Parse error:  syntax error, unexpected T_ELSE in .../forum/includes/session.php on line 1637

Added after 6 minutes 36 seconds:
Сам кусок кода:
Code: Select all
 // phpBB_mobile_detect - Mobile Stlye Redirect MOD
         $this->data['is_mobile'] = false;
         include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
         $this->data['is_mobile'] = mobile_device_detect();

         if ($this->data['is_mobile'] == true)
         {
            $style = 1;
      {
         $this->lang_name = (!$config['override_user_lang'] && file_exists($this->lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($config['default_lang']);
         $this->date_format = ($config['override_user_dateformat']) ? $config['default_dateformat'] : $this->data['user_dateformat'];
         $this->timezone = ($config['override_user_timezone'] ? $config['board_timezone'] : $this->data['user_timezone']) * 3600;
         $this->dst = ($config['override_user_dst'] ? $config['board_dst'] :$this->data['user_dst']) * 3600;
      }
      else  //- вот строка 1637
      {
         $this->lang_name = basename($config['default_lang']);
         $this->date_format = $config['default_dateformat'];
         $this->timezone = $config['board_timezone'] * 3600;
         $this->dst = $config['board_dst'] * 3600;

Added after 10 minutes 15 seconds:
Из модов стоит Галерея и портал
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #11by Sumanai » 19.09.2013, 19:56

Очень похоже на то, что не туда вставили.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #12by shvager » 19.09.2013, 20:01

Такой кусок кода только в одном месте в этом файле:
session.zip
(21.69 KiB) Downloaded 339 times
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #13by Sumanai » 19.09.2013, 20:13

Кажись ошибка в инструкции. После
Code: Select all
         if ($this->data['is_mobile'] == true)
         {
            $style = 3;
Добавьте строчку с
Code: Select all
         }
То есть три таба и фигурная закрывающая скобка.

Added after 1 minute 51 second:
И ещё куда- то потеряли строчку
Code: Select all
      if ($this->data['user_id'] != ANONYMOUS)
Если не заработает моё первое предложение, вставьте её после той, что я предложил, либо на оригинальное место.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #14by shvager » 19.09.2013, 20:21

PHP Parse error: syntax error, unexpected T_ELSE in .../forum/includes/session.php on line 1638

:insane:

Added after 4 minutes 55 seconds:
Ошибка исчезла после такой замены:
Code: Select all
   function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;
      
      // phpBB_mobile_detect - Mobile Stlye Redirect MOD
         $this->data['is_mobile'] = false;
         include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
         $this->data['is_mobile'] = mobile_device_detect();

         if ($this->data['is_mobile'] == true)
         {
            $style = 1;
      }
            if ($this->data['user_id'] != ANONYMOUS)

Продолжу дальше - щас отпишусь))0

Added after 10 minutes 6 seconds:
Во! Арбайтет!
ПыСы
Вот для этого стоит написать как верно найти номер стиля - иначе при входе с мобилы( при неверно указаном ID стиля) - будет общая ошибка:
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #15by Sumanai » 19.09.2013, 20:37

Да, инструкция не верная.
Первый пункт должен быть таким:
Открываем includes/session.php и ищем:
Code: Select all
   function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      if ($this->data['user_id'] != ANONYMOUS)
Заменяем:
Code: Select all
   function setup($lang_set = false, $style = false)
   {
      global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;

      // phpBB_mobile_detect - Mobile Stlye Redirect MOD
         $this->data['is_mobile'] = false;
         include_once($phpbb_root_path . 'includes/mods/mobile_device_detect.' . $phpEx);
         $this->data['is_mobile'] = mobile_device_detect();

         if ($this->data['is_mobile'] == true)
         {
            $style = 3;
            $this->data['is_mobile'] = true;
         }
      // phpBB_mobile_detect End

      if ($this->data['user_id'] != ANONYMOUS)
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #16by shvager » 19.09.2013, 20:41

Я, делал так:
203719092013.PNG

203819092013.PNG

И менял на этот номер.

Added after 32 minutes 32 seconds:
А теперь вопрос к VEG, - как поправить чтобы на мобильном стиле работала склейка сообщений? Это очень "мрачно"? :oops:

Added after 10 minutes 45 seconds:
NO SWEAR wrote:И конечно же, как вы спросите , надо же добавить кнопку для возврата в стандартный стиль. Для этого вам необходимо добавить в нужное место что то вроде этого:


<li><a href="/index.php?style=1" class="menu-link main"><span>Полная версия</span></a></li>
Тут также нужно выставить верный номер вашего основного стиля.
shvager
Мастер
Reputation: 22
With us: 5 years 3 months

Post #17by NO SWEAR » 20.09.2013, 10:05

Sumanai wrote:Да, инструкция не верная.
поправил инструкцию. действительно потерялась одна строчка. прошу прощения за недоразумение.

shvager wrote:Тут также нужно выставить верный номер вашего основного стиля.
я исходил из того что основной стиль форума имеет ид=1 как по дефолту на моём форуме а так же при установке нового форума.
shvager wrote:Я, делал так:

узнать правильный ид стиля можно так:

20.09.png

20.09_2.png
20.09_2.png (6.12 KiB) Viewed 8492 times
NO SWEAR M
Topic author, Гуру
Avatar
Age: 40
Reputation: 95
With us: 4 yaers 11 months

Post #18by Александр_ » 15.10.2013, 14:09

А не проще создать отдельный субдомен (m.forum.ru) с файлами мобильного стиля и делать авто определение и редирект на стороне сервера.

Code: Select all
if ( $http_user_agent ~* (windows\smobile|windows\sce|iphone|ipod|midp|symbian|series\s60|s60|nokia|аndroid| blackberry) ) {
rewrite ^/(.*) m.forum.ru/$1 permanent;

Указать общую таблицу пользователей для общей регистрации, пути к cookies для общей авторизации. и через функцию проверки браузера на стандартном шаблоне выводить что пользователь в мобильной версии сайта.
Александр_
Гость

Post #19by Sumanai » 15.10.2013, 15:58

Александр_ wrote:А не проще создать отдельный субдомен (m.forum.ru) с файлами мобильного стиля и делать авто определение и редирект на стороне сервера.

Может и проще, но, пожалуйста, не делайте так. Лично я с телефона хочу видеть полноценную версию сайта, а подобный код убивает эту возможность, приходится ради какого- то там сайта лезть в настройки браузера.
Ну и как бы phpBB не приспособлен для работы на двух доменах, как и не приспособлен для забирания стилей с поддомена.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1579
With us: 4 yaers 6 months

Post #20by Александр_ » 15.10.2013, 16:21

Подобный код может и убивает, допустим, но его можно изменить и дать вам возможность просмотреть страницу не мобильной версии.
И почему нельзя сделать общую регистрацию и авторизацию двух phpbbex (m.forum.ru и forum.ru) и причем тут забирание стелей, когда речь идет о двух независимых друг от друга форумов с единой базой.
Александр_
Гость

Next

Return to Мастерская