мобильный макет для телефонов

Всем добрый день друзья!

Сижу работаю над простейшей адаптацией существующих мобильных шаблонов под свой проект.

У меня в проекте стоят такие плагины

autoopenid
informer
native
page
templatesocial
usermedals
viewcount
voterules
mainpreview
flow
greetings

в полной версии все нормально.

взял мобильную вот тут

вставил ее в корень, залил.

добавляем определение для юзера с какой платформы он заходит:

$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );

foreach ($phone_array as $value) {
        if ( strpos($agent, $value) !== false ) {
                $config['view']['skin'] = 'm';  
                break;
        } else {
                $config['view']['skin'] = 'developer';  
        }
}


все работает в принципе.
в браузере открывает девелопера
в мобилках — скин мобильных (я его назвал m)

проблема в другом.

в мобильной он хочет пригрузить ВСЕ плагины которые есть в генеральной версии.
вопрос. можно как то в конфиге сделать иф и елсе чтоб в мобильной ВСЕ плагины не включались?

21 комментарий

avatar
Я знаю только один способ. Адаптировать плагины к шаблону.
avatar
О_о
не вариант.
мне в моб. шаблоне нужна только возможность чтения новостей и коментов
плагины ненужны.
должно быть переменная которая делает плагины не активными, если юзер входит с

$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
avatar
в этом я вам увы не помощник
avatar
а как сделать, чтобы этот шаблон включался на m.sitename.ru? Нужно, как я понял, закачать аналогичную ЛС на субдомен и подключить основную базу данных + поставить дефолтным мобильный шаблон… Объясните пожалуйста, если кто знает, как это сделать без травм и т.п.?
avatar
Всё верно, но ещё нужно на главном сайте sitename.ru подключить скрипт который при обнаружении юзера пытающегося зайти на сайт с мобилы будет автоматом перенаправлять его на m.sitename.ru
Например есть такой скрипт — github.com/sebarmeli/JS-Redirection-Mobile-Site
avatar
мне кажется лучше, проще и удобнее сделать переключение скина, чем городить такую штуку с поддоменами и дополнительными установленными движками
avatar
Согласен, намного удобнее.
avatar
o_0 зачем такой огород?

Смотрите главные классы плагинов и там сделайте аналогичный выбор подключаемого плагина в зависимости от устройства.

С другой стороны, если у вас мобильный шаблон, и он переключается правильно, зачем вы заморачиваетесь с плагинами? В щаблон выводится только то, что указано в шаблоне. Уберите ненужный функционал в мобильном шаблоне и все.
avatar
Благодарю за совет
avatar
да но плагины включаются и работают внезависимости от шаблона. или я не правильно вас понял? что значит в данном шаблоне выключить плагины?
avatar
При желании, можно отключать нежелательные плагины при заходе с определенных устройств. Но, как и писал выше, намного проще просто вырезать ненужный функционал в мобильном шаблоне.
avatar
дам конкретный пример
флоу санио — он мне в мобильной версии ломает все и на блоки делает
вот как бы флоу выключить? есть способ?
avatar
Если не ошибаюсь, добавьте проверку, ту которая у вас в посте, в главный класс плагина флоу.
Т.е., при заходе выполняется проверка — если десктоп — грузим флоу, если мобильный/планшет/тп — не грузим флоу.
Теор. должно работать.
avatar
Ну, конечно, вы не подключаете шаблоны в этой проверке, а выполняете/не выполняете загрузку флоу.
avatar
не подскажите каким образом организовать такую проверку? не совсем понял — можно пример?
avatar
Так у вас в топике же эта проверка :-)

А в плагине флоу, скорее всего, в главном классе плагина, есть строки, отвечающие за переопределение акшина ActionIndex, отвечающего за формат вывода главной страницы 'action' => array('ActionIndex'=>'_ActionIndex')
avatar
$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );

foreach ($phone_array as $value) {
        if ( strpos($agent, $value) !== false ) {
                $config['view']['skin'] = 'm'; 
                $config['sys']['plugins']['activation_file'] = 'none'; 
                break;


прописал правило чтоб если с мобилки грузил другой файл плугинов. а он пустой. видимо шляпа раз не работает)))
avatar
/**
 * Настройки плагинов
 */
$config['sys']['plugins']['activation_file'] = 'plugins.dat'; // файл со списком активных плагинов в каталоге /plugins/
$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );

foreach ($phone_array as $value) {
        if ( strpos($agent, $value) !== false ) {
                $config['sys']['plugins']['activation_file'] = 'plugins1.dat'; 
                break;
        } else {
                $config['sys']['plugins']['activation_file'] = 'plugins.dat';  
        }
}


WORKED :)
avatar
Тоже вариант :-)
avatar
кто мне напишет шаблон тпл на профиль юзера для моб версии? все по минимум без картинок?
avatar
Я сделал все как вы описали но у меня выдает такую ошибку: syntax error, unexpected
'$agent' (T_VARIABLE), expecting ')'
Ошибка в 21-ой строке
а вот что в этой строке: $phone_array=array ( 'iphone', 'pocket', 'palm',
'window'$agent=strtolower
( $_SERVER ['HTTP_USER_AGENT'] );
в чем ошибка подскажите чайнику пожалуйста.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.