avatar

Мобильная версия сайта

Опубликовал в блог Дополнения и модули для Simpla CMS
0
Файл api/Design.php — в нем после строки 70 добавим код:

public function set_theme($theme) {
    if(is_dir($this->config->root_dir.'/design/'.$theme.'/html')) {
        setcookie('theme', $theme, time()+60*60*24*30, "/");
        return $theme;
    }
    else
        return false;
}
 
public function get_theme() {
   if(!isset($_COOKIE['theme']) || !is_dir($this->config->root_dir.'/design/'.$_COOKIE['theme'].'/html')) {
       require_once('mobile-detect/Mobile_Detect.php');
       $detect = new Mobile_Detect;

       if ( $detect->isMobile() ) $theme = $this->set_theme($this->settings->theme_mobile);
       else    $theme = $this->set_theme($this->settings->theme_full);
   }
   else
   $theme = $_COOKIE['theme'];

   return $theme;
}
 
public function get_themes()
{
    if($handle = opendir('design/')) {
        while(false !== ($file = readdir($handle)))
        { 
            if(is_dir('design/'.$file) && $file[0] != '.')
            {
                unset($theme);
                $theme->name = $file;
                $themes[] = $theme; 
            } 
        }
        closedir($handle); 
        sort($themes);
    }
    return $themes;
}  


зальем содержимое архива в корень

Теперь, когда мы создали нужные нам методы, можно ими воспрользоваться. Заменим строку 32

32
$theme = $this->settings->theme;

на
на

32
$theme = $this->get_theme();


И далее по файлу — строку 63
$this->design->assign('settings', $this->settings);

заменим на это:
$settings = $this->settings;
$settings->theme = $this->get_theme();
$this->design->assign('settings', $settings);


view/view.php добавим код строка 63:
//моб версия
	if(($theme = strval($this->request->get('theme')))!='') {
                $this->design->set_theme($theme);
                header("Location: ".$this->request->url(array('theme'=>null)));
            }
             
            $this->design->assign('themes',    $this->design->get_themes());


Дальше запрос в бд
INSERT INTO `s_settings` (`name`, `value`) SELECT 'theme_mobile', `value` FROM `s_settings` WHERE `name` = 'theme';

и еще запрос
INSERT INTO `s_settings` (`name`, `value`) SELECT 'theme_full', `value` FROM `s_settings` WHERE `name` = 'theme';


Дальше Добавим в simpla/SettingsAdmin.php код вывода списка шаблонов на странице настроек. После кода (строка 14)

14 $this->design->assign('managers', $managers);


добавим

15 $this->design->assign('themes',    $this->design->get_themes());


Далее в этом же файле добавим перед (строка 24

24 $this->settings->order_email = $this->request->post('order_email');
код для указания шаблонов


25
$this->settings->theme_full = $this->request->post('theme_full');
$this->settings->theme_mobile = $this->request->post('theme_mobile');


В файле simpla/design/html/settings.tpl перед кодом (46 строка)

46
<div class="block layer">
    <h2>Оповещения</h2>

добавим

46

<div class="block layer">
    <h2>Тема</h2>
    <ul>
        <li><label class=property>Основная</label><select name="theme_full" class="simpla_inp">{foreach $themes as $t}<option value="{$t->name}"{if $settings->theme_full == $t->name} selected{/if}>{$t->name}</option>{/foreach}</select>
        <li><label class=property>Мобильная</label><select name="theme_mobile" class="simpla_inp">{foreach $themes as $t}<option value="{$t->name}"{if $settings->theme_mobile == $t->name} selected{/if}>{$t->name}</option>{/foreach}</select>
    </ul>
</div>


терепь зальем диз моб версии из архива (скачать) в папку дизайна и в настройках админки выберем для мобильной версии тему mobile

Если надо добавить в шаблоне ссылку на основной шаблон — можете дописать в шаблоне

<a href="{url theme=$settings->theme_full}">Полная версия</a>

И аналогичная обратная операция — в базовом шаблоне ссылку на мобильную версию

<a href="{url theme=$settings->theme_mobile}">Мобильная версия</a>


демо — napareno.ru
2 комментария RSS
avatar
НЕ работают ссылки
зальем содержимое архива в корень
yadi.sk/d/yLApM_JUu9CqC

зальем диз моб версии из архива (скачать)
yadi.sk/d/XDzx6VSNu9DTb
avatar
А как сделать, чтоб показывался и планшету мобильная версия?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.