SMF4Mobile и ssi страницы

Автор kak2z, 06 марта 2013, 20:17:18

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

В общем надо мне мобильная тема) как я понял кроме SMF4Mobile больше ничего нет (если вдруг есть, покажите, буду очень рад).
В связи с необходимостью мобильной темы возникли такой вопрос: как форум узнает что заходит мобильный пользователь? При установке мобильной темы это автоматом подключается?
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Сапожник

Проверяется UserID браузера. Есть перечень мобильных устройств. Если ЮзерАйди совпадает, форум переключает на выбранную тему.
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

kak2z

в общем купил эту тему)) установил на тестовый форум.. сам форум естественно на мобильном устройстве отображается очень хорошо..
а вот часть сайта на ssi страницах естественно не айс как отображается..
каким условием на ssi страницах можно проверять активирована мобильная тема или нет??
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Сапожник

Цитата: kak2z от 09 марта 2013, 10:54:38сам форум естественно на мобильном устройстве отображается очень хорошо..
Пробовал на всех устройствах или только на "пальцетыковых"?
Раньше, половина плюшек на телефонах "попроще" не работало.
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

kak2z

Цитата: Сапожник от 09 марта 2013, 11:46:01
Пробовал на всех устройствах или только на "пальцетыковых"?
Раньше, половина плюшек на телефонах "попроще" не работало.
а у меня андроид)) на нем и пробовал)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Сапожник

Будет возможность, попробуй зайти с чего-нибудь на Симбиане, например.
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

kak2z

Для корректной работы темы (определения мобильного устройства) нужно установить небольшой мод.

он в файл /Sources/Load.php
перед этой строкой
// The theme was specified by parameter.

записывает такой код



if (isset($_REQUEST['theme']) || (isset($_REQUEST['sa']) && $_REQUEST['sa'] == 'pick' && isset($_REQUEST['th'])))
{
$_COOKIE['smf4m_cookie'] = '';
$_SESSION['smf4mobile_id_theme'] = 0;
setcookie('smf4m_cookie', '', -3600, '/');
}

// Is the theme mode being set?
if (isset($_REQUEST['thememode']))
{
// Store the current session theme's ID if we're switching to mobile
// This is so the current user can return to it later
if ($_REQUEST['thememode'] == 'mobile')
$_SESSION['smf4mobile_id_theme'] = !empty($_SESSION['id_theme']) ? $_SESSION['id_theme'] : 0;

$_SESSION['id_theme'] = 0;

setcookie('smf4m_cookie', $_REQUEST['thememode'] == 'mobile' ? 'mobile' : 'full', time() + (86400 * 60), '/');
$smf4mobile_switch = $_REQUEST['thememode'] == 'mobile';
if (isset($_REQUEST['redirect']))
redirectexit(urldecode($_REQUEST['redirect']));
}
// Is it already set?
elseif (!empty($_COOKIE['smf4m_cookie']))
$smf4mobile_switch = $_COOKIE['smf4m_cookie'] == 'mobile';
// Lets detect it if it isn't set or previously set, just do this only for the main forum
elseif ((!defined('SMF') || SMF != 'SSI') && empty($_SESSION['id_theme']))
{
$user_agents = array(
array('iPhone', 'iphone'),
array('iPod', 'ipod'),
array('iPad', 'ipad'),
array('PocketIE', 'iemobile'),
array('Opera Mini', isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])),
array('Opera Mobile', 'Opera Mobi'),
array('Android', 'android'),
array('Symbian', 'symbian'),
array('BlackBerry', 'blackberry'),
array('BlackBerry Storm', 'blackberry05'),
array('Palm', 'palm'),
array('Web OS', 'webos'),
);

foreach ($user_agents as $ua)
{
$string = $ua[1];
if ((is_bool($string) && $string == true) || (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), $string)))
redirectexit($scripturl . '?thememode=mobile;redirect=' . urlencode($_SERVER['REQUEST_URL']));
}
}

// We're switching to the mobile mode
if (isset($smf4mobile_switch) && $smf4mobile_switch === true)
{
// Get SMF4Mobile's ID
$request = $smcFunc['db_query']('', '
SELECT id_theme
FROM {db_prefix}themes
WHERE variable = {string:name}
AND value = {string:value}',
array(
'value' => 'SMF4Mobile',
'name' => 'name',
)
);
if ($smcFunc['db_num_rows']($request) > 0)
list($id_theme) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
}
// Otherwise we're switching back to full version, we need only bother with this if we
// had a theme selected previously through ?theme=<int>
elseif (isset($smf4mobile_switch) && $smf4mobile_switch === false && !empty($_SESSION['smf4mobile_id_theme']))
$_SESSION['id_theme'] = $_SESSION['smf4mobile_id_theme'];


как я понимаю тут идет определение темы.. теоретически можно вычислить устройство через переменную $_SERVER['HTTP_USER_AGENT

но, если человек принудительно выбирает обычную тему или наоборот на компе выбирает мобильную - то это где то должно хранится.
Хранится это в куках.

И вот тут я в стопоре... помогите разобраться... что мне нужно проверять на ssi страницах что бы запускать определенную тему (я буду переделывать SMF4Mobile для своих страниц) и в тоже время что бы выбор пользователя запоминался..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)