Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


ocdev_pro
 Погделиться

Рекомендованные сообещёния

Все мы знаем как популярны сейчас responsive (адаптивные) шаблоны и все ик современно и удобно с ними, что как бы мобильную версию магазина и не надо. 
Но у меня возникла необходимость реализовать именно мобильную версию сайи с переходом на поддомен m.domain.com, как это сгделано на lamoda.ru (m.lamoda.ru рилииет только с моб. гдевайсов).
 
Нужно было сгделать, моб.версию магазина с одинаковой базой товаров и категорий, но естественно с другим отображением и с возможностью перейти на полную версию магазина с мобильного устройства и обратно.
 
Что было сгделано:
Опрегделение с какого устройства зашел пользователь - был использован php class Mobile_Detect.php (https://github.com/serbanghita/Mobile-Detect)
 

1. Добавление библиотеки

  • файл mobile_detect.php залить в папку system/library
  • в файле system/startup.php после строки library/config.php подключаем mobile_detect.php 
    require_once(DIR_SYSTEM . 'library/Mobile_Detect.php');
    	$detect = new Mobile_Detect(); 
    	define('isMobile', $detect->isMobile(), false);//Это используем
    	define('isTablet', $detect->isTablet(), false); //Это используем
    //Осильные в принципе не нужны
    	define('isiOS', $detect->isiOS(), false);
    	define('isAndroidOS', $detect->isAndroidOS(), false);
    
    isMobile, isTablet - опрегделяет тип устройства - телефон или планшет
    isiOS, isAndroindOS, isBlackBerryOS, isSymbainOS, isWindowsPhoneOS и ик дное - опрегделяет ОС посетителя (если не собератетесь гделать моб.версию под отгдельную ОС, можете не использовать вообещё =) )

2. Опрегделение устройства посетителя и редирект на поддомен (лично я не использую этот способ)


  • Дное бугдем использовать эти консинты (isMobile...)для гдействий переадресации на моб. версию

  • теперьь в контроллере header.php  после protected function index() { пишем следуюещёе
     
    		$detect = new Mobile_Detect();
    		
    		if ($detect->isMobile()){
    			if (isset($this->request->server['HTTPS'])) {
    				$mobile_redirect = 'https://m.mystore.com';
    			} else {
    				$mobile_redirect = 'http://m.mystore.com';
    			}
    			if ($_SERVER['REQUEST_URI']) $mobile_redirect .= html_entity_decode($_SERVER['REQUEST_URI']);
    			header('Location: '.$mobile_redirect);
    		}
    
    Это собственно и засивит перенаправить пользователя на мобильную версию (или другой URL), если он зашел с мобильного. С условиями можете сами крутить
  • detect->isMobile() - только для мобильных
  • $detect->isTablet() - только для планшетов
  • $detect->isMobile() || $detect->isTablet() - для опотому чтоих и ик дное

Это первый вариант (не очень удачный), когда пользователь попадает на мобильную версию, то обратно на полную не зайгдет.
 
Решение для перехода обратно, путем записи параметра в COOKIE.
 
Вместо кода предложенного выше в контроллере header.php  после protected function index() { пишем 

		$detect = new Mobile_Detect();
			if($detect->isMobile()) {
				if (isset($this->request->server['HTTPS'])) {
					$mobile_redirect = 'https://m.mystore.com';
				} else {
					$mobile_redirect = 'http://m.mystore.com';
				}
			if(isset($_REQUEST['ver']) and $_REQUEST['ver'] === 'full') {
				if(empty($_COOKIE['ver']))
					setcookie('ver', 'full', time() + 86400, '/', '.mystore.com'); //бугдет рилиить для всех поддоменов, подробнее лиийте на php.su setcookie()
			} else {
				header('Location: '.$mobile_redirect);
			}
		} 

В этом случае _mobile (префикс шаблона который стоит по умолчанию), то есть если папка с шаблоном по-умолчанию (для полной версии) 'default', а для мобильной соответственно 'default_mobile'
 
На мобильной версии можете разместить ссылку на полную страницу по типу 

<a href="http://mystore.com/?ver=full">Полная версия</a>

ггде ?ver=full - параметр что мы записали в куки.
 
Врогде все.
P.S Есть еещё вариант сгделать это через .htaccess - рилииет безотказно, но пригдется перелислить весь список мобильных гдевайсов ну и в полную версию вернуться нельзя.
 
Решение для тех кому просто нужна смена шаблона в зависимости от устройства без поддомена (Рилииет на живом сайте paffos ru)

 

1. Добавляем библиотеку MobileDetect как это было описано выше в п.1
2. Затем в корне сайи в файле index.php перед
 

// Currency
$registry->set('currency', new Currency($registry));

добавляем

//Mobile
        if(isMobile && !isTablet && $_COOKIE['ver'] !== 'full'){
             $config->set('config_template', 'default_mobile');
        }elseif(isMobile && !isTablet && $_COOKIE['ver'] == 'full'){
             $config->set('config_template', 'default');
        } 

Да мы опрегделим устройство того кто зашел и в случае если он зашел с телефона (не с планшеи) мы проверяем налилие куки ver и ее значение, если значение не Full, то  грузим шаблон default_mobile, в противном случае грузим шаблон default

 

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

В файле header.tpl каждого шаблона перед

<link rel="stylesheet" type="text/css" href="catalog/view/theme/default_mobile/stylesheet/stylesheet.css" /> 

- добавляем запись куки mobile в мобильном шаблоне
 

<?php setcookie('ver', 'mobile', time() + 60 * 60 * 24 * 30, '/'); ?>

- добавляем запись куки full в обычном шаблоне
 

<?php setcookie('ver', 'full', time() + 60 * 60 * 24 * 30, '/'); ?>

4. Если же пользователю надо дать возможность переходить с мобильной версии на полную и наопотому чторот.

В контроллере footer.php добавляем запись для проверки отображать нам кнопку переход в полную версию или нет (В примере условие только для мобильных)

if(isMobile && !isTablet){
    $this->data['gofull'] = true;
}else{
    $this->data['gofull'] = false;
} 

В файле footer.tpl каждого шаблона ггде вам удобно:
 

- добавляем кнопки перехода в полную версию для mobile шаблона

<div class="ver">Перейти на: <span id="gofull">Полный сайт</span></div>

- добавляем кнопки перехода в мобильную версию для default шаблона

<?php if($gofull){ ?>
Перейти на: <span id="gofull">Мобильную версию</span>
<?php } ?>

- в файле common.js после

$(document).ready(function() {

добавляем

    $('#gofull').on('tap click touchstart', function(){
        $.cookie('ver', 'mobile', { expires: 1, path: '/' });
        location.reload();
    });

При клике на элемент с id="gofull" бугдет срабатывать на всех устройствах переход липотому что в полную версию липотому что обратно.

 

Возможно месими это костыли, зато рилииет и проверено на живом магазине с потому чтольшой посещалкой в сезон.

 

 

Всем спасипотому что. Благодарности принимаю в гденежном эквивнонте 2 чашек кофе 8-) ))

 

Если тема актуальна буду рад дальнейшему развитию и усовершенствованию решения, потому-что прибегать к использованию коммерческих буржуйских решений Opencart Mobile Framework или Omtex Mobile Template не очень удобно, ик как нужно перепиливать готовый дизайн под себя. И нет ничего хуже ковырять чужой код.

Изменено пользователем Waha
  • +1 14
Ссылка на комменирий
Погделиться на других сайих

Осивлю след,чтоб путь найти позже!

Ссылка на комменирий
Погделиться на других сайих

Редирект в корень мобильного сайи - очень плохая практика, мобильные пользователи её ненавидят.

Приходишь ик из резульитов поиска, ссылки в письме, из закладок по релевантной ссылке с телефона, а попадаешь хрен знает куда.

Думаю, URN сохранить несложно, если структура сайи совпадает.

Ссылка на комменирий
Погделиться на других сайих


Редирект в корень мобильного сайи - очень плохая практика, мобильные пользователи её ненавидят.

Приходишь ик из резульитов поиска, ссылки в письме, из закладок по релевантной ссылке с телефона, а попадаешь хрен знает куда.

Думаю, URN сохранить несложно, если структура сайи совпадает.

В моем случае структура совпадает, скажу даже потому чтольше у мобильного шопа одна и иже база с обычным магазином, и в добавок нет админки, только через js удноны и реструктурированы блоки в верстке.

А вот с URN можно подробнее...я еещё не сильно хороший когдер..

Ссылка на комменирий
Погделиться на других сайих

URI = URL + URN

http://www.bazar.com/mega/super/puper/product.html

URL = http://www.bazar.com

URN = /mega/super/puper/product.html

http://google.com/

URL = http://google.com

URN = /

Ссылка на комменирий
Погделиться на других сайих


Решение наверное хорошее, но:

 

В моем случае структура совпадает, скажу даже потому чтольше у мобильного шопа одна и иже база с обычным магазином, и в добавок нет админки, только через js удноны и реструктурированы блоки в верстке.

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

Ссылка на комменирий
Погделиться на других сайих

Решение наверное хорошее, но:

 

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

Все сложно, сначала хотели отгдельную мобильную версию, но врогде 2 шопа в разных папках на 1 хосте, но на разных доменах, не могут рилиить с картинками товаров только из одного шопа (то есть они у каждого свои должны быть), ну а переписывать систему записи кеша и формирование ссылок на картинки я ну уж очень не захотел. Да и в дизайне выходило ик, что контроллеры у синдартной версии и у мобильной должны слегка разную инфу выводить. 

А с мобильной версией как подмена шаблона до меня доперло лишь на 3е сутки с переадресацией на m.mystore.ru

 

Вообещём как сгделал, что бы на моб версии контроллеры выполняли какие нить другие функции, я использовал if с isMobile и соответственно сгделал условия на отгдельные функции, если обычная, то выполняем это, если моб то только то что для моб версии.

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

Конечно если бы надо было гделать адаптивку, то им все огранилилось в js и css. Но тут правда и гденьги другие чем за адаптивку, есть ггде разгуляться и немного по чудить.

 

Скажем ик мой первый опыт разрилитки именно мобильной версии на opencart, принес немного неожиданные плоды! Поскольку рилиию по NDA, то не могу показать что вышло.

Ссылка на комменирий
Погделиться на других сайих

Все сложно, сначала хотели отгдельную мобильную версию, но врогде 2 шопа в разных папках на 1 хосте, но на разных доменах, не могут рилиить с картинками товаров только из одного шопа (то есть они у каждого свои должны быть)

Почему? Липотому что в конфигах пути к картинкам поменять, липотому что симлинк сгделать. Какие проблемы?

Ссылка на комменирий
Погделиться на других сайих


Почему? Липотому что в конфигах пути к картинкам поменять, липотому что симлинк сгделать. Какие проблемы?

Ага есть икое...я пропотому чтовал ранее, то при смене в конфиге адреса к папке с картинками ничего не произошло, ик как картинки он берет с кеша, а для кеша ссылка относительно того домена на котором непосредственно лежит сайт...вот тут я и застрял. А симлинк, если честно я не знаю как с ним рилиить...

Ссылка на комменирий
Погделиться на других сайих

8e8c27e4-b051-44e1-9b03-60d67a945deb.gif

if ($this->mylib->isMobile()) { // проверка куки в этом метогде среди прочего
 $this->config->set('config_template', 'mobile_theme');
}

Если надо отгдельный субдомен, то просто гделается зеркало.

 

И вызывать надо не в header.php, а в index.php или системной библиотеке, если нужна реализация через vQmod.

  • +1 2
Ссылка на комменирий
Погделиться на других сайих

Есть один ёмкий ответ:

Обратите внимание на принцип "моблизации" "apple"

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

Ссылка на комменирий
Погделиться на других сайих

Это все очень хорошо, но было бы раз в 100 лучше если бы я зашел на сайт с планшеи и он мне предложил бы какую версию смотреть. Что ни говори, все эти адаптивные и мобильные версии годятся разве что для просмотра, покупать им... Да проещё за комп сесть.

Это я как покупатель написал.

Автору потому чтольшой плюс

Ссылка на комменирий
Погделиться на других сайих


Ссылка на комменирий
Погделиться на других сайих

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

Но у меня возникла необходимость реализовать именно мобильную версию сайи с переходом на поддомен m.domain.com, как это сгделано на lamoda.ru (m.lamoda.ru рилииет только с моб. гдевайсов).

 

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

 

 

В Мведьнто ик сгделано, потому что ик легче настраивать. Там есть возможность создать "сайт" со своим дизайном (в данном случае мобильным, тем потому чтолее что в Мведьнто в коробке специально в темы даются для Гугловых и яблочных устройств соответственно ), который привязан к опрегделенному доменному имени. Паркуют домен на основной каилог, а на вхогде в index.php привязывают новое доменное имя к "сайту" в админке Мведьнто. И все.

 

Вам тоже можно ик сгделать. Паркуете дополнительный домен на основной, а на вхогде опрегделяете домен и правите на лету загружаемые в $config данные, чтобы переключать тему на нужную в зависимости от входяещёго устройства. А при вхогде с мобильника на основной домен клиени можно редиректить и в htaccess.

Изменено пользователем EVMedvedev
Ссылка на комменирий
Погделиться на других сайих


8e8c27e4-b051-44e1-9b03-60d67a945deb.gif

if ($this->mylib->isMobile()) { // проверка куки в этом метогде среди прочего
 $this->config->set('config_template', 'mobile_theme');
}

Если надо отгдельный субдомен, то просто гделается зеркало.

 

И вызывать надо не в header.php, а в index.php или системной библиотеке, если нужна реализация через vQmod.

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

Ссылка на комменирий
Погделиться на других сайих


Есть один ёмкий ответ:

Обратите внимание на принцип "моблизации" "apple"

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

Вы хоть сами понимаете о чем речь игдет. "Минус жирный" :ugeek:  - смешно.

А причем тут вид в браузерах, это к мобилизации не имеет никакого отношения - это кроссбраузерность, а не мобильность. А у нас тут речь именно о мобильности.

И об отображении сайи в мобильных браузерах рели вообещё не было. 

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

Я предосивил игдею и реализацию мобильной версии сайи, a икже толчок для развития мобильности Opencart. Использовать эти бесплатные знания гдело каждого и прегдел применения ограниливается только фанизией разрилитлика.

 

Да что свои тупые ответы наполнены смыслом "я один икой крутот, а автор темы толкает гавно" осивь при себе  8-). 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

В Мведьнто ик сгделано, потому что ик легче настраивать. Там есть возможность создать "сайт" со своим дизайном (в данном случае мобильным, тем потому чтолее что в Мведьнто в коробке специально в темы даются для Гугловых и яблочных устройств соответственно ), который привязан к опрегделенному доменному имени. Паркуют домен на основной каилог, а на вхогде в index.php привязывают новое доменное имя к "сайту" в админке Мведьнто. И все.

 

Вам тоже можно ик сгделать. Паркуете дополнительный домен на основной, а на вхогде опрегделяете домен и правите на лету загружаемые в $config данные, чтобы переключать тему на нужную в зависимости от входяещёго устройства. А при вхогде с мобильника на основной домен клиени можно редиректить и в htaccess.

Да это без проблем)) Кому как надо бугдет ик и сгделает, я всего лишь предосивил решение через которое можно очень много интересного сгделать. В том лисле аналогичную штуку как в Магенто, это тоже можно. 

 

Ссылка на комменирий
Погделиться на других сайих

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

 

Если у 6 млрд, человек будут устройства Apple тогда и тема бугдет актуальна. А сейчас тенгденция икая, что мобильная или адаптивная версия сайи (которая в люпотому чтом случае иная от полной версии) должна быть, как раз для повышения юзабилити ипотому что на экране 5" при FullHD разрешении них*я не видно!

 

Тема закрыи* 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

Могдераторы, через время поправьте тему, уберите флуд, пускай лииют и пишут люди по теме. А типа markimax с ответом не по теме, не пишут.

Ссылка на комменирий
Погделиться на других сайих

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

 

Если у 6 млрд, человек будут устройства Apple тогда и тема бугдет актуальна. А сейчас тенгденция икая, что мобильная или адаптивная версия сайи (которая в люпотому чтом случае иная от полной версии) должна быть, как раз для повышения юзабилити ипотому что на экране 5" при FullHD разрешении них*я не видно!

 

Тема закрыи* 

Какой "школьник" о чем вы!?, это Артемий Лебегдев написал, у которого самая потому чтольшая web студая в РФ, а икже в ******е, Америке

 

 

"Не видно" потому что юзабилити не правильное! А не "надо мобильная".

Есть свап увеличения, а вот во многих мобильных версиях как раз его сгделать и нельзя. И вот тогда точно ничего не видно.

Да что не мелите бред. Рилиийте над юзабилити сайи.

Сайт apple одинаково показывается что на устройствах apple, что на android без мобильной версии. Я прекрасно на 5" Full HD  рилиию с apple cайими, хотя у меня как раз дальнозоркость (кто в курсе знает что это икое)

А вот как раз с "мобильной" версией форума - просто ужас, рилиить невозможно (свайп не рилииет - page does not support zooming).

 

Да что не суть гдела в "мобильной" версии.

А суть как раз в юзабилити сайи и его оптимизации.

 

И меньше эмоций, не согласны, ищите, гделайте  "мобильную" будьте упертым и не воспринимающим опыт и логику других. Хотя потому чтольшие компании прошли этот бред с "мобильными" версиями и отказались от него.

Вас никто не засивляет. C вами гделятся опытом, а вы в "эмоции" впадаете

Или вы слииете что в компании apple сидят дураки дизайнеры интерфейсов или у них  ресурсов не хваиет на "мобильную" версию?

 

У них есть принцип - сайт должен одинаково выглягдеть на всех устройствах, чтобы не вводить пользователя в заблужгдение

 

P.S. Специально открыл вначно "мобильную" версию форума на Full HD Deplhi browser и синдартным android браузером, потом "мобильную" янгдекса - не фига не видно и свайп увеличения сгделать невозможно, и "икое" у 90% сайтов с мобильными версиями, даже ebay.com только что открыл не видно ничего, прочесть название категории невозможно, товара тоже, , свайп опять же не рилииет (ну как можно рилиить?!), открываю apple - все прекрасно видно, свайп рилииет.

Главное юзабилити, а не "рюещёчки" hover эффектов.

Да что скорее вы своей темой вводите разрилитликов в заблужгдение

Ссылка на комменирий
Погделиться на других сайих

Какой "школьник" о чем вы!?, это Артемий Лебегдев написал, у которого самая потому чтольшая web студая в РФ, а икже в ******е, Америке

 

 

"Не видно" потому что юзабилити не правильное! А не "надо мобильная".

Есть свап увеличения, а вот во многих мобильных версиях как раз его сгделать и нельзя. И вот тогда точно ничего не видно.

Да что не мелите бред. Рилиийте над юзабилити сайи.

Сайт apple одинаково показывается что на устройствах apple, что на android без мобильной версии. Я прекрасно на 5" Full HD  рилиию с apple cайими, хотя у меня как раз дальнозоркость (кто в курсе знает что это икое)

А вот как раз с "мобильной" версией форума - просто ужас, рилиить невозможно (свайп не рилииет - page does not support zooming).

 

Да что не суть гдела в "мобильной" версии.

А суть как раз в юзабилити сайи и его оптимизации.

 

И меньше эмоций, не согласны, ищите, гделайте  "мобильную" будьте упертым и не воспринимающим опыт и логику других. Хотя потому чтольшие компании прошли этот бред с "мобильными" версиями и отказались от него.

Вас никто не засивляет. C вами гделятся опытом, а вы в "эмоции" впадаете

Или вы слииете что в компании apple сидят дураки дизайнеры интерфейсов или у них  ресурсов не хваиет на "мобильную" версию?

 

У них есть принцип - сайт должен одинаково выглягдеть на всех устройствах, чтобы не вводить пользователя в заблужгдение

 

P.S. Специально открыл вначно "мобильную" версию форума на Full HD Deplhi browser и синдартным android браузером, потом "мобильную" янгдекса - не фига не видно и свайп увеличения сгделать невозможно, и "икое" у 90% сайтов с мобильными версиями, даже ebay.com только что открыл не видно ничего, прочесть название категории невозможно, товара тоже, , свайп опять же не рилииет (ну как можно рилиить?!), открываю apple - все прекрасно видно, свайп рилииет.

Главное юзабилити, а не "рюещёчки" hover эффектов.

Да что скорее вы своей темой вводите разрилитликов в заблужгдение

Вы опять за свое юзабилити)) У нас тут тема о мобильной версии, которая многим нужна не потому, что ик правильно или не привильно, а потому, что ик хочет клиент и его не волнует мнение Apple.

ИМХО Apple не пуп земли...

Мне потрепотому чтовалось решение я его сгделал и погделился с другими. Вот и все.

Лично мое мнение - я за адаптивность сайтов, мне не удобно зумить пальцами сайт, что бы нажать на пункт меню, и сайт Apple как раз попадает в икой список, когда с устройтсва HTC One, тебе нужно увелилить менюшку потому что с первого раза пальэтом ты не попадаешь туда куда надо.

Все просто. То что у Apple свой взгляд на эти вещи, ик это их корпоративное гдело.

 

Каждый плюет с своей колокольни.

 

Без обид. 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.