VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Если у вас есть мобильная версия форума, точнее мобильный стиль, то хорошо бы сообщать об этом пользователям мобильных устройств.
я сделал вот такое решение, воспользовавшись кодом с http://detectmobilebrowsers.com/: пользователи с телефонов увидят вверху экрана большую гиперссылку на мобильную версию, а пользователи других устройств эту ссылку не увидят.
Причем ссылка на мобильную версию будет работать корректно на любой странице - открывать сразу мобильную версию этой страницы, а не мобильную версию главной страницы сайта.
Принудительный переброс на мобильную версию как дополнение к этому решению описан здесь.
Имплементация может быть выполнена так (в коде замените значение $mobilestyleid для вашего форума):
PHP Code:
В global.php добавить код: $useragent=$_SERVER['HTTP_USER_AGENT']; $mobilestyleid = 4; // здесь укажите id своего мобильного стиля (Админка -> Стили и шаблоны -> Управление стилями -> "Все опции стиля" для вашего мобильного стиля -> в левом верхнем углу "Шрифты / цвета и т.д.: Мобильная версия (id: 4"), 4 - это то, что нужно. if(!preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) { $MobileStyleBanner = ""; // if not mobile device } else { $mobilestylelink = $_SERVER['PHP_SELF'] . "?"; if (strlen($_SERVER['QUERY_STRING']) > 0) $mobilestylelink .= $_SERVER['QUERY_STRING']; $mobilestylelink .= "&styleid=" . $mobilestyleid; $mobilestylelink = '<a href = "' . $mobilestylelink . '" style="color:#FF0000">Мобильная версия</a>'; $MobileStyleBanner = '<table class="tborder" width="100%" cellpadding="12" cellspacing="1" border="0"><tr border="0" width="100%"><td class="alt1" border="0" align="center"><font size="6"><b>' . $mobilestylelink . '</font></b></td></tr></table>'; }
Затем вставить текст
PHP Code:
$MobileStyleBanner
в самом начале в шаблон header (Админка -> Стили и шаблоны -> Управление стилями -> "Общие шаблоны" для основного стиля (полной версии форума)).
И добавить новую фразу mobile_style = "Мобильная версия" (Админка -> Языки и фразы -> Управление фразами -> Добавить новую фразу)
Last edited by tays : 04-28-2015 at 01:30 PM.
Reason: Добавлена ссылка на автоподключение мобильного стиля
функцию в файл функций воблы (functions.php)
и затем при выполнении функции, смотреть, что вернула, true или false и если вернула true, подключать мобильный стиль
использование функции проще для человека, не сильно разбирающегося в регулярках, там просто нужно добавить в массив еще одни узерагент
@BTC
СпециалистЪ
Join Date: Aug 2013
Posts: 727
Версия vB: 3.8.x
Reputation:
Knowing 240
Репутация в разделе: 47
0
Уже было, но в любом случае красавчик что описал найденный тобой способ, может кому-нибудь пригодится, однозначно плюсую!
Sellrion
Kernel panic
Join Date: Aug 2007
Location: Екатеринбург
Posts: 2,536
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1920
Репутация в разделе: 793
1
Quote:
Originally Posted by eska
могут быть ложные срабатывания алгоритмов детектирования мобильных устройств
Вы косвенно утверждаете, что ваш код безошибочно определяет мобильное устройство, но основан он на $_SERVER['HTTP_USER_AGENT'], которое клиент может передать совершенно любое. Понятно, что я говорю об экзотических ситуациях и обычный юзер не будет этим заниматься, но и утверждений таких делать не стоит. $_SERVER['QUERY_STRING'] в зависимости от настроек сервера может быть пустым.
Quote:
Originally Posted by eska
$_SERVER[PHP_SELF]
Все ключи массивов обязательно нужно заключать в кавычки, не смотря на то, что так тоже можно писать.
Может быть это и придирки, но вы выложили этот код для всех, значит считаете его переносимым.
@tays
Эксперт
Join Date: Jun 2006
Posts: 372
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1071
Репутация в разделе: 753
0
Quote:
Originally Posted by Sellrion
Вы косвенно утверждаете, что ваш код безошибочно определяет мобильное устройство... утверждений таких делать не стоит
я такого не утверждал ни прямо, ни косвенно. Пожалуйста читайте только то, что написано буквами.
За опечатку спасибо, исправил.
Плюс добавил определение фразы, которая используется в коде.
Sellrion
Kernel panic
Join Date: Aug 2007
Location: Екатеринбург
Posts: 2,536
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1920
Репутация в разделе: 793
0
Quote:
Originally Posted by eska
я такого не утверждал ни прямо, ни косвенно.
Читаем:
Quote:
Originally Posted by eska
что могут быть ложные срабатывания алгоритмов детектирования мобильных устройств, поэтому я сделал вот такое решение
Вы указали на проблему наличия ложных срабатываний "алгоритмов детектирования мобильных устройств" и предложили решение этой проблемы. Как это еще понимать?))
Quote:
Originally Posted by eska
Плюс добавил определение фразы
Замените лучше $_SERVER['QUERY_STRING'] и $_SERVER['PHP_SELF'] либо на API-шный вариант (что лучше всего) либо на свой, работающий на всех серверах. Доки по PHP читать, это конечно здорово, но знание нюансов приходит с опытом. В особенности понятие нюансов относится к PHP.
@tays
Эксперт
Join Date: Jun 2006
Posts: 372
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1071
Репутация в разделе: 753
1
Для того, чтобы автоматически отображать по умолчанию мобильный стиль на телефонах, к описанным в первом сообщении изменениям нужно добавить еще вот такие:
Найти в global.php текст:
PHP Code:
else { // no style specified - use default $styleid = $vbulletin->options['styleid']; $vbulletin->userinfo['styleid'] = $styleid; }
Примечание: программный код из первого сообщения должен располагаться в тексте global.php выше (там определяются переменные $MobileStyleBanner и $mobilestyleid)
@Profimc
Простоузер
Join Date: Feb 2015
Location: Ростов-на-Дону
Posts: 38
Версия vB: 3.8.7
Пол:
Reputation:
Опытный 11
Репутация в разделе: 7
0
Quote:
Originally Posted by eska
Для того, чтобы автоматически отображать по умолчанию мобильный стиль на телефонах, к описанным в первом сообщении изменениям нужно добавить еще вот такие:
не перекидывает автоматически, когда захожу с телефона. Может подскажите что-нибудь?
@tays
Эксперт
Join Date: Jun 2006
Posts: 372
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1071
Репутация в разделе: 753
2
Quote:
Originally Posted by Profimc
не перекидывает автоматически, когда захожу с телефона. Может подскажите что-нибудь?