Разработка дополнения смена шаблона вторая ветка

#1 19 июля 2015 в 09:44
Есть 2 шаблона, один обычный, второй мобильный.
Нужно разработать дополнение, чтобы при заходе на сайт делалась проверка, если это мобильный или планшет происходила смена шаблона, и также чтобы была возможность обратно перейти на обычный шаблон.
Пишите в личку свои предложения

про адаптивные шаблоны можете не писать smile
#2 3 октября 2015 в 22:02


Есть 2 шаблона, один обычный, второй мобильный.
Нужно разработать дополнение, чтобы при заходе на сайт делалась проверка, если это мобильный или планшет происходила смена шаблона, и также чтобы была возможность обратно перейти на обычный шаблон.
Пишите в личку свои предложения

про адаптивные шаблоны можете не писать smile

Kokshetimes

как решили?
#3 3 октября 2015 в 22:24



Есть 2 шаблона, один обычный, второй мобильный.
Нужно разработать дополнение, чтобы при заходе на сайт делалась проверка, если это мобильный или планшет происходила смена шаблона, и также чтобы была возможность обратно перейти на обычный шаблон.
Пишите в личку свои предложения

про адаптивные шаблоны можете не писать smile

Kokshetimes

как решили?

ivanish

Думаю подключение Mobile_Detect.php может без проблем это решить
#4 3 октября 2015 в 22:44




Есть 2 шаблона, один обычный, второй мобильный.
Нужно разработать дополнение, чтобы при заходе на сайт делалась проверка, если это мобильный или планшет происходила смена шаблона, и также чтобы была возможность обратно перейти на обычный шаблон.
Пишите в личку свои предложения

про адаптивные шаблоны можете не писать smile

Kokshetimes

как решили?

ivanish

Думаю подключение Mobile_Detect.php может без проблем это решить

DELLитант

Не силен в программировании, тему с мобдидектом прочел. ОПределив, что у нас мобильник — как ему подсунуть другой шаблон. Важен именно шаблон, потому как при использовании @media скрипты и прочее ненужное никуда не девается.
#5 4 октября 2015 в 16:12

как решили?

ivanish
Еще пока в разработке
#6 6 октября 2015 в 04:24
Очень просто решается этот вопрос.

С этого сайта mobiledetect.net/ берём последнюю версию класса (он же в архиве). Переименовываем файл в mobiledetect.php. Открывает его и даём имя классу cmsMobileDetect (для того, чтобы он подгружался автоматически). Закидываем файл в /system/core/

Далее остаётся только добавить пару строк в файл bootstrap.php

Полное содержание файла
  1.  
  2. // Определяем корень
  3. define('PATH', dirname(__FILE__));
  4. define('ROOT', $_SERVER['DOCUMENT_ROOT']);
  5.  
  6. // Устанавливаем кодировку
  7.  
  8. // Подключаем автозагрузчик классов
  9. require_once PATH . '/system/config/autoload.php';
  10.  
  11. // Устанавливаем обработчик автозагрузки классов
  12. spl_autoload_register('autoLoadCoreClass');
  13.  
  14. // Инициализируем конфиг
  15. $config = cmsConfig::getInstance();
  16.  
  17. // Создаём экземпляр класса cmsMobileDetect (Mobile_Detect)
  18. $detect = new cmsMobileDetect();
  19.  
  20. // Меняем шаблон на мобильный
  21. if ($detect->isMobile()) {
  22. $config->set('template', 'mobile'); // Вместо mobile указать реальное название каталога с мобильным шаблоном
  23. }
  24.  
  25. // Загружаем локализацию
  26. cmsCore::loadLanguage();
  27.  
  28. // Устанавливаем часовую зону
  29. date_default_timezone_set( $config->time_zone );
  30.  
  31. // Подключаем все необходимые классы и библиотеки
  32. cmsCore::loadLib('html.helper');
  33. cmsCore::loadLib('strings.helper');
  34. cmsCore::loadLib('files.helper');
  35.  
  36. // Инициализируем ядро
  37. $core = cmsCore::getInstance();
  38.  
  39. // Подключаем базу
  40. $core->connectDB();
  41.  
Добавленные строчки
  1. // Создаём экземпляр класса cmsMobileDetect (Mobile_Detect)
  2. $detect = new cmsMobileDetect();
  3.  
  4. // Меняем шаблон на мобильный
  5. if ($detect->isMobile()) {
  6. $config->set('template', 'mobile'); // Вместо mobile указать реальное название каталога с мобильным шаблоном
  7. }
В нашем случае имеем 2 шаблона desktop и mobile.



Прикрепленный файл
files_ec7mp.zip 26 Кб
#7 6 октября 2015 в 05:52
Ребята, а можно этим методом воспользоватся — что бы при заходе через мобильные открывался не другой шаблон, а другой сайт, стоит который на поддомене?
#8 6 октября 2015 в 10:08


Ребята, а можно этим методом воспользоватся — что бы при заходе через мобильные открывался не другой шаблон, а другой сайт, стоит который на поддомене?

vsemkrot

Можно.
Содержание файла bootstrap.php
  1.  
  2.  
  3. // Определяем корень
  4. define('PATH', dirname(__FILE__));
  5. define('ROOT', $_SERVER['DOCUMENT_ROOT']);
  6.  
  7.  
  8.  
  9. // Устанавливаем кодировку
  10.  
  11. // Подключаем автозагрузчик классов
  12. require_once PATH . '/system/config/autoload.php';
  13.  
  14. // Устанавливаем обработчик автозагрузки классов
  15. spl_autoload_register('autoLoadCoreClass');
  16.  
  17. // Инициализируем конфиг
  18. $config = cmsConfig::getInstance();
  19.  
  20. // Создаём экземпляр класса cmsMobileDetect (Mobile_Detect)
  21. $detect = cmsMobileDetect::getInstance();
  22.  
  23. if ($detect->isMobile()) {
  24. // Устанавливаем конфигурацию для мобильного сайта
  25. $config->set('template', 'mobile'); // Меняем шаблон на мобильный, если нужно
  26. $config->set('host', 'http://mobile.instant2.net');
  27. $config->set('upload_host', 'http://mobile.instant2.net/upload');
  28. // Проверяем домен
  29. if($_SERVER['HTTP_HOST'] != 'mobile.instant2.net'){
  30. // Перенаправляем
  31. header('Location: http://mobile.instant2.net');
  32. }
  33. } else {
  34. // Иначе устанавливаем конфигурацию обычного сайта
  35. $config->set('template', 'desktop'); // Меняем шаблон на обычный, если нужно
  36. $config->set('host', 'http://instant2.net');
  37. $config->set('upload_host', 'http://instant2.net/upload');
  38. }
  39.  
  40. // Загружаем локализацию
  41. cmsCore::loadLanguage();
  42.  
  43. // Устанавливаем часовую зону
  44. date_default_timezone_set( $config->time_zone );
  45.  
  46. // Подключаем все необходимые классы и библиотеки
  47. cmsCore::loadLib('html.helper');
  48. cmsCore::loadLib('strings.helper');
  49. cmsCore::loadLib('files.helper');
  50.  
  51. // Инициализируем ядро
  52. $core = cmsCore::getInstance();
  53.  
  54. // Подключаем базу
  55. $core->connectDB();
  56.  
  57.  
P.S В класс добавлен метод getInstance (синглтон) на всякий случай. В архиве выше его нет, так что в файл /system/core/mobiledetect.php нужно его добавить.
В самом начале после открывающей фигурной скобки
  1. private static $instance;
Перед public function __construct
  1.  
  2. public static function getInstance() {
  3. if (self::$instance === null) {
  4. self::$instance = new self;
  5. }
  6. return self::$instance;
  7. }
  8.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.