Перейти к содержимому


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


Другой шаблон при заходе с мобильного


Сообщений в теме: 34

#1 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 12 февраля 2014 - 20:55

Дополнение позволяет сделать так, чтобы для мобильных устройств и обычных грузились разные шаблоны.
Расположение мобильного шаблона штатное: tpl.html-файлы в core/tpl/user/[имя шаблона], а остальной набор данных (js, css, картинки) - при необходимости - в data/[имя шаблона].

Спонсор дополнения: kery

Установка:
=========

1. копируем файлы

addon.php -> core/includes/admin/
is_mobile.php -> core/functions/


2. создаем каталог core/cache/mobile/


3. в файле index.php

3.1 после строки

$smarty = new Smarty;


вставляем

# BEGIN Mobile-template
if (isset($_GET['mobile_template'])) $_SESSION['mobile_template'] = ($_GET['mobile_template'] == 'yes');
if (!isset($_SESSION['mobile_template'])) $_SESSION['mobile_template'] = is_mobile();
if ($_SESSION['mobile_template'])
{
$smarty->compile_dir = 'core/cache/mobile';
$smarty->cache_dir = 'core/cache/mobile';
}
# END Mobile-template


3.2 вместо строки

if (isset($_SESSION["CUSTOM_DESIGN"]))


вставляем

# BEGIN Mobile-template
#  if (isset($_SESSION["CUSTOM_DESIGN"]))
if ($_SESSION['mobile_template'])
  {
  $smarty->template_dir = "core/tpl/user/".CONF_MOBILE_TEMPLATE;
  define('TPL', CONF_MOBILE_TEMPLATE);
  }
  elseif (isset($_SESSION["CUSTOM_DESIGN"]))
# BEGIN Mobile-template


4. Заходим в админку. Это нужно, чтобы чтобы отработал файл addon.php и создалась настройка выбора "мобильного" шаблона.
В админке в "Общих настройках" появится возможность задать еще один шаблон - для показа мобильным устройствам.


Принудительная смена шаблона происходит путем GET-запроса mobile_template=yes или mobile_template=no
Например, путем создания ссылки <a href="/?mobile_template=no">Обычная версия сайта</a> в мобильной версии.

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

Прикрепленные файлы


http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 Lada

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 7
Начинающий
  • ГородЧита

Отправлено 24 марта 2014 - 22:12

При заходе с мобильного почему-то белая страница.. Подскажите что не так делаю

#3 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 24 марта 2014 - 22:25

Просмотр сообщенияLada сказал:

При заходе с мобильного почему-то белая страница.. Подскажите что не так делаю
Да кто ж его знает... Способность совершать ошибки безгранична.
В том числе и у меня :).
Обычно в таких случаях обращаются либо к богу, либо к автору, либо к логам.
В логах четко написано, что не так.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 Lada

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 7
Начинающий
  • ГородЧита

Отправлено 18 мая 2014 - 17:05

Переключение на мобильный шаблон срабатывает.. Но вот никак в толк не могу взять - а как сам мобильный шаблон сделать? Может быть кто поделится мобильным, уже настроенным шаблоном, что бы разобраться от какой печки плясать начинать? ^_^

#5 Dbus

    Продвинутый пользователь

  • VIP
  • 1 106 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 18 мая 2014 - 21:01

Lada, погуглите лучше адаптивную верстку.
А мобильным шаблоном вряд-ли кто поделиться по доброте душевной, они как бы денег стоят :)
502 Bad Gateway

#6 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 19 мая 2014 - 19:03

Просмотр сообщенияLada сказал:

Может быть кто поделится мобильным, уже настроенным шаблоном, что бы разобраться от какой печки плясать начинать?
ИМХО, "печка от которой плясать" очевидна - уже имеющийся собственный шаблон, если хочется мобильный иметь в том же стиле, картинках и цветах. Сделайте его клон и потихоньку правьте под мобильность.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 kery

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 127 сообщений
Репутация: 15
Начинающий

Отправлено 20 мая 2014 - 08:00

Просмотр сообщенияLada (18 мая 2014 - 17:05) писал:

Переключение на мобильный шаблон срабатывает.. Но вот никак в толк не могу взять - а как сам мобильный шаблон сделать? Может быть кто поделится мобильным, уже настроенным шаблоном, что бы разобраться от какой печки плясать начинать? ^_^
пиши в личку, я себе сверстал мобильный шаблон, есть все страницы которые есть в стандартном, сделал на jqery mobale 1.3

#8 Lada

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 7
Начинающий
  • ГородЧита

Отправлено 25 июня 2014 - 15:29

Нашелся альтернативный вариант - getshopapp.com - товар автоматом берется из RSS магазина, и в принципе все там нормально, за исключением главного - ОПЛАТЫ...
Если магазин заточен не под наличку, а например под оплаты через агрегаторы, то беда - что бы брать деньги к примеру с карточки или с Яндекс денег, у вас мало того, что должно быть ИП, но еще и ИП с Расчетным счетом...
В общем вариантов оплаты кот наплакал...
А так-то магазин там, вернее его мобильная версия делается легко и красиво...

#9 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 185 сообщений
Репутация: 52
Продвинутый

Отправлено 10 февраля 2015 - 16:05

Интересно, как сделать чтобы шаблон менялся из меню мобильного браузера. Там есть такой пункт ("ПОлная версия") и в хроме и в мозилле. Но какую именно команду дает браузер? Ставит куку и дает post запрос... С этой доработкой пока что не срабатывает. Хотелось бы "допилить".

#10 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 185 сообщений
Репутация: 52
Продвинутый

Отправлено 11 февраля 2015 - 10:34

Просмотр сообщенияSalp (10 февраля 2015 - 16:05) писал:

Интересно, как сделать чтобы шаблон менялся из меню мобильного браузера.
Разобрался - браузер меняет свой user agent. Как это решить в данном случае уже есть идея (создать еще одну сессионную куку и следить за ее изменением). Протестирую - отпишусь.

#11 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 11 февраля 2015 - 10:39

Просмотр сообщенияSalp сказал:

Но какую именно команду дает браузер?
А это уже по барабану. При первом заходе создается переменная сессии, где прописано, что шаблон мобильный (если определилися заход с мобильного устройства). Далее в этой сессии уже не проверяется, откуда заход. Хочется сменить шаблон на обычный - есть кнопка смены шаблона. Хочется автоопределять каждый раз - откажитесь от сохранения состояния в $_SESSION
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 185 сообщений
Репутация: 52
Продвинутый

Отправлено 11 февраля 2015 - 15:49

Просмотр сообщенияbadisoft (11 февраля 2015 - 10:39) писал:

Хочется автоопределять каждый раз - откажитесь от сохранения состояния в $_SESSION
Это вариант, но он лишит возможности принудительно открыть мобильную версию на обычном браузере(может быть нужно для отладки) и наоборот, т.к. каждый раз смена шаблона будет автоматическая.
Вот это решение позволяет вручную менять шаблоны при помощи ссылки и следить за изменением user agent браузера на случай, если переключение выполнено не ссылкой, а из меню мобильного браузера, который имеет такую возможность.
На шаге 3.1 вместо:
# BEGIN Mobile-template
if (isset($_GET['mobile_template'])) $_SESSION['mobile_template'] = ($_GET['mobile_template'] == 'yes');
if (!isset($_SESSION['mobile_template'])) $_SESSION['mobile_template'] = is_mobile();
if ($_SESSION['mobile_template'])
{
$smarty->compile_dir = 'core/cache/mobile';
$smarty->cache_dir = 'core/cache/mobile';
}
# END Mobile-template
пишем немного измененный код:
# BEGIN Mobile-template
if (isset($_GET['mobile_template']))
{
$_SESSION['mobile_template'] = ($_GET['mobile_template'] == 'yes');
$_SESSION['is_mobile'] = is_mobile();
Redirect($_SERVER["HTTP_REFERER"]); //Остаемся на той же странице без перехода на главную
}
if ((!isset($_SESSION['mobile_template']))or($_SESSION['is_mobile'] != is_mobile()))
{
$_SESSION['mobile_template'] = is_mobile();
$_SESSION['is_mobile'] = $_SESSION['mobile_template'];
}
if ($_SESSION['mobile_template'])
{
$smarty->compile_dir = 'core/cachem'; //Нужно создать папку core/cachem и разрешить в нее запись
$smarty->cache_dir = 'core/cachem';
}
# END Mobile-template
Теперь шаблон меняется и GET-запросом и при смене user agent.
(Я изменил путь для кеша, на мой взгляд, его так удобнее чистить. Нужно создать соответствующую папку core/cachem)

#13 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 204 сообщений
Репутация: 7
Начинающий

Отправлено 09 марта 2015 - 10:51

Просмотр сообщенияLada (24 марта 2014 - 22:12) писал:

При заходе с мобильного почему-то белая страница.. Подскажите что не так делаю
А попробуйте зайти так...
адрес_вашего_сайта/index.php?mobile_template=yes
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#14 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 09 марта 2015 - 19:28

Просмотр сообщенияFusSheva сказал:

А попробуйте зайти так...
ИМХО, с появлением готового халявного шаблона на bootstrap (от 3.1.3) вся эта ерунда с переходом от мобильного шаблона к обычному почти потеряла смысл.

Если же надо именно шаблон менять, то вот более удобная (проще) версия этого же дополнения:

========================
1. копируем файлы

addon.php -> core/includes/admin/
is_mobile.php -> core/functions/
to_mobile.tpl.html -> core/tpl/user/[шаблон]/blocks/ (в оба шаблона)


2. в файле index.php

после строки

session_start();


вставляем

# BEGIN Mobile-template
if (isset($_POST['mobile_template'])) $_SESSION['mobile_template'] = (int)$_POST['mobile_template'];
if (!isset($_SESSION['mobile_template'])) $_SESSION['mobile_template'] = is_mobile();
if ($_SESSION['mobile_template']) $_SESSION['CUSTOM_DESIGN'] = CONF_MOBILE_TEMPLATE;
elseif (isset($_SESSION['CUSTOM_DESIGN'])) unset($_SESSION['CUSTOM_DESIGN']);
# END Mobile-template



3. В "мобильном" шаблоне в файле to_mobile.tpl.html меняем value="1" на value="0"


4. Заходим в админку. Это нужно, чтобы отработал файл addon.php и создалась настройка выбора "мобильного" шаблона. В админке в "Общих настройках" появится возможность задать еще один шаблон - для показа мобильным устройствам.

Смена шаблона обычный/мобильный происходит путем POST-запроса mobile_template=1 или mobile_template=0
=====================

PS. а вообще у меня написано дополнение, которое не только меняет шаблон, но еще и для каждого шаблона имеет свое "Управление блоками" и "Общие настройки". Там можно хоть десять разных шаблонов по кругу менять и у каждого будет свой набор и расположение блоков, а также свое количество колонок в категориях и прочие настройки.

Прикрепленные файлы


http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#15 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 204 сообщений
Репутация: 7
Начинающий

Отправлено 10 марта 2015 - 03:18

Цитата

PS. а вообще у меня написано дополнение, которое не только меняет шаблон, но еще и для каждого шаблона имеет свое "Управление блоками" и "Общие настройки". Там можно хоть десять разных шаблонов по кругу менять и у каждого будет свой набор и расположение блоков, а также свое количество колонок в категориях и прочие настройки.

Это уже пахнет мультидоменостью магазина. ;)

У OpenCart такая функция присутствует. C возможностью показывать товары только те которые нужно показывать в данном магазине, плюс можно ставить разные шаблоны дизайна.
В общем, одна база данных товаров на сколько угодно магазинов. Правда домены должны быть на одной хост-площадке. Ну и так хорошо.

С удовольствием бы приобрел такое дополнение для ShopCMS.
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#16 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 10 марта 2015 - 13:11

Цитата

Это уже пахнет мультидоменостью магазина.
мультидоменность (без привязки товаров, только шаблон) делается достаточно легко. Кто мешает завязать $_SESSION['CUSTOM_DESIGN'] на $_SERVER['HTTP_HOST']?
Вплоть до совсем уж примитивного
$_SESSION['CUSTOM_DESIGN'] = $_SERVER['HTTP_HOST'];

А каталоги шаблонов переименовать соттветственно доменным именам.
Останется только заменить везде CONF_SHOP_URL (берущийся из настроек) на CONF_FULL_SHOP_URL (берущийся из $_SERVER['HTTP_HOST']) либо define для CONF_SHOP_URL переделать соответствующим образом.
Наверняка там еще что-нибудь вылезет, но врядли что-то серьезное и сложное.

Цитата

C возможностью показывать товары только те которые нужно показывать в данном магазине, плюс можно ставить разные шаблоны дизайна. В общем, одна база данных товаров на сколько угодно магазинов.
Для того, чтобы разным шаблонам давать разные настройки и блоки уже требуется довольно много переделок. Чтобы привязать показ/непоказ товара и категории к текущему шаблону потребуются еще переделки, хотя и не особеннно серьезные. В результате получится не "инструкция по внедрению модуля", а "как из однодоменного ShopCMS сделать совершенно другой продукт". Тут правильнее один раз переделать ShopCMS под мультидоменность и отдать в доступ (или в продажу) уже готовый продукт. Скажем, multiShopCMS :).
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#17 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 10 марта 2015 - 21:50

Просмотр сообщенияbadisoft сказал:

а вообще у меня написано дополнение, которое не только меняет шаблон, но еще и для каждого шаблона имеет свое "Управление блоками" и "Общие настройки". Там можно хоть десять разных шаблонов по кругу менять и у каждого будет свой набор и расположение блоков, а также свое количество колонок в категориях и прочие настройки.
См. на сайте в подписи. Имплантировал туда кроме старого еще пару шаблонов.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#18 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 204 сообщений
Репутация: 7
Начинающий

Отправлено 10 марта 2015 - 23:43

Так можно сделать просто списком (через обычный select). И посимпатичней будет, и один код блока для всех шаблонов. ;)

p.s. Упс, не заметил. Вы уже так сделали на дефолтовом шаблоне. :)
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#19 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 10 марта 2015 - 23:58

Просмотр сообщенияFusSheva сказал:

p.s. Упс, не заметил. Вы уже так сделали на дефолтовом шаблоне.
Это штатный темплейт change_template.tpl.html из дефолтового шаблона.
Он всегда был и всегда работал, просто никто его не использовал.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#20 makki

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 145 сообщений
Репутация: 7
Начинающий

Отправлено 09 мая 2015 - 22:46

Как сделать, чтобы у каждого шаблона были свои Общие настройки и Расположение блоков? Без этого не вижу смысла в данном дополнении.