Simpla 2: мобильная версия сайта

Simpla 2: мобильная версия сайта

Дата публикации:
Поделиться:

Итак. Выполним запрос на добавление мобильного шаблона

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)

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

добавим

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

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

			$this->settings->order_email = $this->request->post('order_email');

код для указания шаблонов

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

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

Кстати, можете при необходимости добавить сюда еще варианты шаблонов с соответствующими полями (например, региональный с последующей выборкой в клиентской части).

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

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

добавим

        <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>

Настройки мобильной версии

Админская часть закончена.

Теперь заменим нашу ранее созданный метод get_theme в файле api/Design.php (строка 93)

    public function get_theme() {
      if(!isset($_COOKIE['theme']) || !is_dir($this->config->root_dir.'/design/'.$_COOKIE['theme'].'/html')) {
          if($this->is_mobile_browser())
              $theme = $this->set_theme($this->settings->theme_mobile);
          else
              $theme = $this->set_theme($this->settings->theme_full);
      }
      else
          $theme = $_COOKIE['theme'];

      return $theme;
    }

Мы использовали стандартный метод определения мобильных браузеров.

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

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

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

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

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

Вот и все на сегодня! Приятного дня!

Отзывы

Оставьте отзыв
На него будут приходить уведомление при ответе. На сайте не публикуется

Модули из этой тематики