Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ocdev_pro

Користувачі
  • Публікації

    2 022
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем ocdev_pro

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

     

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

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

     

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

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

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

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

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

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

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

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

     

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

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

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

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

     

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

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

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

     

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

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

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

     

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

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

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

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

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

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

  6. Все мы знаем как популярны сейчас 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 не очень удобно, так как нужно перепиливать готовый дизайн под себя. И нет ничего хуже ковырять чужой код.

    • +1 15
  7. Нашел еще 1 небольшой косяк

    При постраничной навигации в категориях (или производителях не важно) при переходе скажем на страницу №3  ссылки назад "<" и в начало "|<", они сливаются.

    Решение: в файле system/library/pagination.php строка 38 строка '</a>'; В конце пробел добавить '</a> ';

  8. При добавлении товара в корзину у нас вылазит блок success и уведомляет о том что товар добавлен в корзину, закрывается при нажатии на крестик. 

    Крестик это картинка с классом "close"

    $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
    

    Что обрабатывает class="close", что бы блок success исчез?

  9. В версии 1.5.5.1 работает немножко с другим кодом

    function addToCartQuick(product_id, quantity) {
    quantity = typeof(quantity) != 'undefined' ? quantity : 1;
    $.ajax({
      url: 'index.php?route=checkout/cart/add',
      type: 'post',
      data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
      dataType: 'json',
      success: function(json) {
       $('.success, .warning, .attention, .information, .error').remove();
       window.location.href = 'index.php?route=checkout/cart';
      }
    });
    }
    
  10. Только заметил вот какой косяк, при добавлении товара, во вкладке Связи, в полях - Главная категория, Показывать в категориях - нарушена сортировка категорий, в версии 1.5.4.1 все хорошо было.

    в 1.5.4.1 - Сортировка идет

    Категория родитель

     - вложенная

     - вложенная

    Категория родитель 2

    - вложенная....

    Начиная с 1.5.5.1 

    Сортировка непонятная совсем((( И Заданный порядок сортировки в категориях не срабатывает в этих полях при добавлении товара.

    Было замечено минимум на 5 сайтах

     

    Решение для себя, не в обиду разработчика релиза, но надо запускать отдельный бета тест на выявление ошибок.

    Решение проблемой с сортировкой описанной выше:

    в файле admin/controller/catalog/product.php

    Заменяем код с строки 1283 по 1304 на следующее:

    		$this->load->model('catalog/category');
    				
    		$categories = $this->model_catalog_category->getAllCategories();
    
    		$this->data['categories'] = $this->getAllCategories($categories);
    		
    		if (isset($this->request->post['main_category_id'])) {
    			$this->data['main_category_id'] = $this->request->post['main_category_id'];
    		} elseif (isset($product_info)) {
    			$this->data['main_category_id'] = $this->model_catalog_product->getProductMainCategoryId($this->request->get['product_id']);
    		} else {
    			$this->data['main_category_id'] = 0;
    		}
    
    		if (isset($this->request->post['product_category'])) {
    			$this->data['product_category'] = $this->request->post['product_category'];
    		} elseif (isset($this->request->get['product_id'])) {
    			$this->data['product_category'] = $this->model_catalog_product->getProductCategories($this->request->get['product_id']);
    		} else {
    			$this->data['product_category'] = array();
    		}		
    

    и в конце файла перед 1709 строкой } ?> добавляем:

    	private function getAllCategories($categories, $parent_id = 0, $parent_name = '') {
    		$output = array();
    
    		if (array_key_exists($parent_id, $categories)) {
    			if ($parent_name != '') {
    				$parent_name .= $this->language->get('text_separator');
    			}
    
    			foreach ($categories[$parent_id] as $category) {
    				$output[$category['category_id']] = array(
    					'category_id' => $category['category_id'],
    					'name'        => $parent_name . $category['name']
    				);
    
    				$output += $this->getAllCategories($categories, $category['category_id'], $parent_name . $category['name']);
    			}
    		}
    
    		return $output;
    	}
    

    Дернул с контролера 1.5.4.1 так как там работает! спасибо за внимание.

  11. Только заметил вот какой косяк, при добавлении товара, во вкладке Связи, в полях - Главная категория, Показывать в категориях - нарушена сортировка категорий, в версии 1.5.4.1 все хорошо было.
    в 1.5.4.1 - Сортировка идет
    Категория родитель
     - вложенная

     - вложенная

    Категория родитель 2

    - вложенная....

    Начиная с 1.5.5.1 

    Сортировка непонятная совсем((( И Заданный порядок сортировки в категориях не срабатывает в этих полях при добавлении товара.

    Было замечено минимум на 5 сайтах
     

  12. Начинающий?

     

    Не хрена себе.

     

    Я создаю сайты в отличи от Вас не барижничаю.

     

    P.S дела не в 150 рублях возврать не прощу. Чтоб другие знали пережде чем покупать.

    Молодой человек, прежде чем бить себя в грудь и говорить"Да я, да то", ВНИМАТЕЛЬНО читайте что вам пишут! Где вы увидели слово "начинающий" ?. Если ваши эмоции не позволяют вам адекватно работать и оценивать ситуацию, обратитесь к специалисту, думаю поможет. Да и еще судя по количеству допущенных грамматических ошибок, могу предположить, что сайты у вас точно такие же.

    В дальнейшем продолжении нашей дискуссии не вижу смысла. Всего доброго.

  13. Че за фигня?

    Отображается товары одной категории на всех категориях.

    Например включил отображаение в подвале странице категории - товары из категории 3 тперь эти товары отображается на все категориях в подвале.

    И Демо не то, что в файлах.

     

    Чушь полный.

    С претензиями начинающимися со слов "Че за фигня?", принципиально отвечать не буду. Рекомендую воздержатся от подобных высказываний и вопросы по работе модуля формировать более конструктивно.

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

  14. Все круто, вот только я не гуру .htaccess, при установке RewriteBase /shop (папка где находиться магазин), браузер выдает сообщение об Бесконечной переадресации. 

  15. сделать поддоменный тип магазина а не подкаталогом... то есть не domain.com/shop а shop.domain.com

    Это был бы один из самых простых путей, но SEO специалисты сказали, именно так надо, так лучшее в продвижении.

  16. Есть основной сайт на wordpress domain.com и магазин на opencart в папке shop (domain.com/shop)
    Ссылки формируются по типу /shop/cvety (Как ссылка выглядят domain.com/shop/cvety) соответственно срабатывает wordpress чпу и выдает, что страница не существует.
    Как разделить ЧПУ?!

  17. У меня не сработал данный способ, версия osstore 1541, сделал всё 1 в 1, создал лейаут, ид16, подключил категорию на этот лейаут, отредактировал category.php

    в результате выводится тот же самый шаблон category.tpl, а subcategory.tpl нет.

     

    upd в версии 1541 нужно менять строки 350 в шаблоне category.php

    всё подключилось!

    Спасибо за тестирование на 1541, я на нем не проверял (только на 1551)

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.