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


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


  • Вы не можете ответить в тему
Сообщений в теме: 36

#1 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 February 2014 - 08:55 PM

Дополнение позволяет сделать так, чтобы для мобильных устройств и обычных грузились разные шаблоны.
Расположение мобильного шаблона штатное: 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, найденные в инете. Они не имеют ни малейшего отношения к товарному наполнению и тематике сайта и добавлены просто для понимания, как все это работает.

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


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

#2 Lada

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

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

Отправлено 24 March 2014 - 10:12 PM

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

#3 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 March 2014 - 10:25 PM

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

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

#4 Lada

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

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

Отправлено 18 May 2014 - 05:05 PM

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

#5 Dbus

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

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 18 May 2014 - 09:01 PM

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

#6 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 May 2014 - 07:03 PM

Может быть кто поделится мобильным, уже настроенным шаблоном, что бы разобраться от какой печки плясать начинать?

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

#7 kery

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

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

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

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

пиши в личку, я себе сверстал мобильный шаблон, есть все страницы которые есть в стандартном, сделал на jqery mobale 1.3
  • 0

#8 Lada

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

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

Отправлено 25 June 2014 - 03:29 PM

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

#9 Salp

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

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

Отправлено 10 February 2015 - 04:05 PM

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

#10 Salp

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

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

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

Интересно, как сделать чтобы шаблон менялся из меню мобильного браузера.

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

#11 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

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

Но какую именно команду дает браузер?

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

#12 Salp

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

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

Отправлено 11 February 2015 - 03:49 PM

Хочется автоопределять каждый раз - откажитесь от сохранения состояния в $_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)
  • 1

#13 FusSheva

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

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

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

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

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

#14 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 March 2015 - 07:28 PM

А попробуйте зайти так...

ИМХО, с появлением готового халявного шаблона на 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. а вообще у меня написано дополнение, которое не только меняет шаблон, но еще и для каждого шаблона имеет свое "Управление блоками" и "Общие настройки". Там можно хоть десять разных шаблонов по кругу менять и у каждого будет свой набор и расположение блоков, а также свое количество колонок в категориях и прочие настройки.

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


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

#15 FusSheva

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

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

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

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


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

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

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

#16 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 March 2015 - 01:11 PM

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

мультидоменность (без привязки товаров, только шаблон) делается достаточно легко. Кто мешает завязать $_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 :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#17 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 March 2015 - 09:50 PM

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

См. на сайте в подписи. Имплантировал туда кроме старого еще пару шаблонов.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#18 FusSheva

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

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

Отправлено 10 March 2015 - 11:43 PM

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

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

#19 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 March 2015 - 11:58 PM

p.s. Упс, не заметил. Вы уже так сделали на дефолтовом шаблоне.

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

#20 makki

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

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

Отправлено 09 May 2015 - 10:46 PM

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