Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

Как избавится от постоянно всплывающего окна подтверждения Hello, New user. Появляется при лбом клике и перезагрузке страницы.

 

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

 

Есть проблема..... при переходе по ссылкам на сайте он поочередно переходит с полной версии на мобильную, так же при обновлении страницы он переключает то на мобильную то полную.

 

Это странно, но возможно у вас куки отключены? а возможно что-то не так сделали... нужно сайт смотреть - пишите в ЛС

Link to comment
Share on other sites

 

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

много вопросов по теме. и как обычно не понятно чего куда когда и где)

Link to comment
Share on other sites


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

много вопросов по теме. и как обычно не понятно чего куда когда и где)

Реально нету времени на такое)))) а так теоретически возможно

Link to comment
Share on other sites

Реально нету времени на такое)))) а так теоретически возможно

Давайте давайте)

я на прошлых страницах спрашивал чего и как, так вы сказали что забили на всё.

терь вот захожу а тут целый теоретический холивар растянулся на всю тему) Пора выводить на практику)

Link to comment
Share on other sites


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

много вопросов по теме. и как обычно не понятно чего куда когда и где)

 

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

Или 1.5 еще долго будет боевым движком? Вы вот как считаете?

Link to comment
Share on other sites


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

Или 1.5 еще долго будет боевым движком? Вы вот как считаете?

есть проект где я до сих пор ещё 1.5.3.1 использую ;)

кому то в лом перепиливать под 2.0

проще моб версию замутить..

мнеб лично понять как переключалку сделать и всё.

а там срезал правый и левый сайд бар вот те и моб версия))

 

Link to comment
Share on other sites


мнеб лично понять как переключалку сделать и всё.

 

 

Вообще автор показал переключатель, за что ему респект.

 

Но я сделал немного по-другому

Задача

1. Юзер зашел с десктопа. -> Загружается стандартный шаблон. В футере нет ссылки на мобильную версию.

2. Юзер зашел с мобильного. -> Загружается мобильный шаблон. В футере ссылка на полную версию

 - Юзер тапнул по ссылке "на полную" -> Загрузился стандартный шаблон.

 - Юзер тапнул по ссылке "на мобильную" -> Загрузился мобильный шаблон.

 

Пошагово (часть повтор первого поста автора темы)

1. в папку /catalog/view/theme заливаем папку с шаблонами с именем 'mobile_theme'. 

2. в папку /system/library/ файл mobile_detect.php (есть в первом сообщении темы и во всех интернетах)

3. в файл /cart/system/startup.php добавляем в раздел //common

$detect = new Mobile_Detect(); 
define('isMobile', $detect->isMobile(), false);
define('isTablet', $detect->isTablet(), false);

4. В файле /system/library/config.php я сделал по-своему, это чтобы мобильный юзер мог прыгать туда-сюда. Заменить функцию public function get($key)

  	public function get($key) {
  		  		
  		if ($key == "config_template") {
				if (isMobile && !isTablet) {
					
					if (!isset($_GET['ver']) && !isset($_COOKIE['ver'])) {
						return (isset($this->data[$key]) ? 'mobile_theme' : null);
					}
					
					if (isset($_GET['ver']) ) {
						setcookie('ver', $_GET['ver'], time() + 86400, '/', '.www.АДРЕС_САЙТА.ru'); 
						if ($_GET['ver'] == 'mobile') {
							return (isset($this->data[$key]) ? 'mobile_theme' : null); 
						} else {
							return (isset($this->data[$key]) ? $this->data[$key] : null);
						}
						
					}
					
					if (isset($_COOKIE['ver']) && $_COOKIE['ver'] != 'full') {
						return (isset($this->data[$key]) ? 'mobile_theme' : null); 
					}
	  			}  				
		}  				
		
    	return (isset($this->data[$key]) ? $this->data[$key] : null);
  	}	

4. в файле /catalog/view/theme/default/template/common/footer.tpl добавляем ссылку на мобильную, если юзер сидит с мобильного

  <div class="column">
    <h3><?php echo $text_account; ?></h3>
    <ul>
      <li><a href="<?php echo $account; ?>"><?php echo $text_account; ?></a></li>
      <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li>
      <li><a href="<?php echo $wishlist; ?>"><?php echo $text_wishlist; ?></a></li>
      <li><a href="<?php echo $newsletter; ?>"><?php echo $text_newsletter; ?></a></li>
      //сслыка на мобильную если юзер на полной версии с мобильного
      <?php if (isMobile && !isTablet) { ?>
      <li><a href="<?php echo $home . '&ver=mobile'; ?>">На мобильную версию</a></li>
      <?php }?>
    </ul>
  </div>

5. в файле /catalog/controller/common/footer.php добавить

 

$this->data['home'] = $this->url->link('common/home');

6. в файле /catalog/view/theme/mobile_theme/template/common/footer.tpl добавляем ссылку на полную версию

	<div class="box">
	  <div class="box-heading"><?php echo $text_extra; ?></div>
		<ul class="link_list">
		  <li><a href="<?php echo $manufacturer; ?>"><?php echo $text_manufacturer; ?></a></li>
		  <li><a href="<?php echo $voucher; ?>"><?php echo $text_voucher; ?></a></li>
		  <li><a href="<?php echo $affiliate; ?>"><?php echo $text_affiliate; ?></a></li>
		  <li><a href="<?php echo $special; ?>"><?php echo $text_special; ?></a></li>
		  //ссылка на полную
                  <li><a href="<?php echo $home . '&ver=full'; ?>">На полную версию</a></li>
		</ul>
	</div>
Edited by mmicha
Link to comment
Share on other sites


 

 

Пошагово (часть повтор первого поста автора темы)

1. в папку /catalog/view/theme заливаем папку с шаблонами с именем 'mobile_theme'. 

2. в папку /system/library/ файл mobile_detect.php (есть в первом сообщении темы и во всех интернетах)

3. в файл /cart/system/startup.php добавляем в раздел //common

$detect = new Mobile_Detect();
define('isMobile', $detect->isMobile(), false);
define('isTablet', $detect->isTablet(), false);

 

Надо ли прописывать что-то в файле index.php ?

 

Пробовал кучу разных вариантов, комбинировал Ваш метод с методом от Waha, но все равно, при заходе на сайт с мобильного получаю белый пустой экран ((

Edited by drewz
Link to comment
Share on other sites


 

 
 

 

Надо ли прописывать что-то в файле index.php ?

 

Пробовал кучу разных вариантов, комбинировал Ваш метод с методом от Waha, но все равно, при заходе на сайт с мобильного получаю белый пустой экран ((

 

Значит попробуйте как описано у меня в начале темы и внимательно все читайте.. Рекомендую постоянно мониторить лог ошибок там есть все ответы))

Link to comment
Share on other sites

Конечно смотреть лог ошибок.

 

Надо ли прописывать что-то в файле index.php ?

 

Пробовал кучу разных вариантов, комбинировал Ваш метод с методом от Waha, но все равно, при заходе на сайт с мобильного получаю белый пустой экран ((

 

В index.php ничего не надо. 

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

Link to comment
Share on other sites


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

Это был прекрасный совет! Шаблон таки был кривоват )))

Теперь сайт открывается и на мобильном.

Сделал по методу Waha. Но в index.php у меня следующий код, с которым все-таки заработало:

 

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

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

Также, в логе ошибок при "чистом" заходе на мобильную версию появляется ошибка:

PHP Notice: Undefined index: ver in /****/www/index.php on line 206

Edited by drewz
Link to comment
Share on other sites


И правильно что появляется. 

Нужна проверка случая, когда куки еще не записаны. 

if ( !isset($_COOKIE['ver']) {

 

}

Link to comment
Share on other sites


mmicha,  Если я все правильно понял, то в итоге код должен выглядеть так: ?

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

В таком случае выбивает общую ошибку:

 

Parse error: syntax error, unexpected '{' in /*****/www/index.php on line 207

 

Заранее спасибо

Link to comment
Share on other sites


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

 

Не правильно

  1. if (!isset($_COOKIE['ver']) {

 

Правильно

 

  1. if (!isset($_COOKIE['ver'])) {

 

Вы делаете проверку на то что куки не записаны, в этом случае зачем проверять значение индекса 

$_COOKIE['ver']

 

И еще надо прописать, что выполняется если куки записаны. Например, если по-вашему, сначала проверим случай что куки записаны

if (isset($_COOKIE['ver'])) {
        if(isMobile && !isTablet && $_COOKIE['ver'] !== 'full'){
             $config->set('config_template', 'sb_mobile_theme');
        }elseif(isMobile && !isTablet && $_COOKIE['ver'] == 'full'){
             $config->set('config_template', 'sb_mobile_theme');
        } 
} else {
// что делаем если куки не записаны
}

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

209. $config->set('config_template', 'sb_mobile_theme');
Edited by mmicha
Link to comment
Share on other sites


Честно говоря, я взял код из первого поста от Waha:

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

Ответ на вопрос по поводу "что делать, если куки не записаны", наверное будет - записать куки в зависимости от того, через какой девайс зашел пользователь.

Но ведь это действие уже происходит в файле с шаблоном  :unsure:

 

 

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

 

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

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

<?php setcookie('ver', 'full', time() + 60 * 60 * 24 * 30, '/'); ?>
Link to comment
Share on other sites


Но ведь это действие уже происходит в файле с шаблоном  :unsure:

 

 

Ну вот я и предлагал свой вариант переключали, где фактически все происходит в config.php.

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

Повторюсь, мне не совсем понятно это, в том варианте, который вы показываете.

$config->set('config_template', 'sb_mobile_theme');
Link to comment
Share on other sites


 

Ну вот я и предлагал свой вариант переключали, где фактически все происходит в config.php.

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

 

Сделал все, как написано в Вашем способе. Все работает.

+ еще добавил в catalog/controller/common/footer.php описание переменной $home, поскольку его там не было.

Ошибок никаких нет.

 

Но, при переходе из мобильной версии на полную и наоборот, пользователя перебрасывает таки на соответствующую тему, но на страницу "Запрашиваемая страница не найдена"  :(

Link to comment
Share on other sites


У меня там есть одно место, где я поленился сделать по уму, но выделил большими буквами, не исключено, что вы этот момен упустили:

Что в этой строке

setcookie('ver', $_GET['ver'], time() + 86400, '/', '.www.АДРЕС_САЙТА.ru');

Адрес сайта ручками надо, не забыли?

Извиняюсь что код без форматирования, пишу с мобильной версии :)

Link to comment
Share on other sites


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

Link to comment
Share on other sites


Забыл я таки одну вещь, когда делал степ-бай-степ

Если линки переходов делаете как у меня, конечно надо в контроллере футера добавить строку:

файл

/catalog/controller/common/footer.php

$this->data['home'] = $this->url->link('common/home');
Link to comment
Share on other sites


ну тогда, еще один каверзный момент.  Там где пишутся куки и адрес сайт ручками, перед www точно не забыли?

 

Когда в лоб заходите с мобильного, нужный шаблон грузится?

 

Если хотите, выкладывайте сюда файлы переключателя в архиве, погляжу, самому интересно, что у вас не переключается.

Link to comment
Share on other sites


ну тогда, еще один каверзный момент.  Там где пишутся куки и адрес сайт ручками, перед www точно не забыли?

 

Когда в лоб заходите с мобильного, нужный шаблон грузится?

 

Если хотите, выкладывайте сюда файлы переключателя в архиве, погляжу, самому интересно, что у вас не переключается.

Ребята сюда выкладывать ничего не надо, если хотите в 2м решить свою проблему решайте в личной переписке.. Спасибо

Link to comment
Share on other sites

  • 1 month later...

3. в файл /cart/system/startup.php добавляем в раздел //common

$detect = new Mobile_Detect(); define('isMobile', $detect->isMobile(), false);define('isTablet', $detect->isTablet(), false);

Для тех, кто как я сделал по инструкции, но получил в ответ белый экран,

попробуйте это:

1. в тексте опечатка.

3. в файл /cart/system/startup.php добавляем в раздел //common

 

2. Там-же перед строкой

$detect = new Mobile_Detect();

сделайте запрос на скрипт:

require_once(DIR_SYSTEM . 'library/Mobile_Detect.php');

И всё должно заработать.

Спасибо всем, кто отписался в теме!

 

PS. Свежий файлик скачать можно тут http://mobiledetect.net/

Edited by bezzubtsev
Link to comment
Share on other sites


Ещё раз спасибо за скрипты!

Оставлю это сдесь. Код можно вставить в любой tpl (например на страницу продукта). Надписи можете заменить своим кодом.

Например, я для мобильных телефонов отключил colorbox

<?php $detect = new Mobile_Detect;
if ( $detect->isMobile() ) { ?>
Ok, mobile
<?php } else { ?>
 No, not mobile
<?php } ?>
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.