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

ocdev_pro

Users
  • Posts

    2,022
  • Joined

  • Last visited

Everything posted by ocdev_pro

  1. Вы опять за свое юзабилити)) У нас тут тема о мобильной версии, которая многим нужна не потому, что так правильно или не привильно, а потому, что так хочет клиент и его не волнует мнение Apple. ИМХО Apple не пуп земли... Мне потребовалось решение я его сделал и поделился с другими. Вот и все. Лично мое мнение - я за адаптивность сайтов, мне не удобно зумить пальцами сайт, что бы нажать на пункт меню, и сайт Apple как раз попадает в такой список, когда с устройтсва HTC One, тебе нужно увеличить менюшку потому что с первого раза пальцем ты не попадаешь туда куда надо. Все просто. То что у Apple свой взгляд на эти вещи, так это их корпоративное дело. Каждый плюет с своей колокольни. Без обид.
  2. Модераторы, через время поправьте тему, уберите флуд, пускай читают и пишут люди по теме. А типа markimax с ответом не по теме, не пишут.
  3. Да да да - тема написана разъяренным школьником, у которого от неумения или не желания работать с моб.версией просто горит пукан. Если у 6 млрд, человек будут устройства Apple тогда и тема будет актуальна. А сейчас тенденция такая, что мобильная или адаптивная версия сайта (которая в любом случае иная от полной версии) должна быть, как раз для повышения юзабилити ибо на экране 5" при FullHD разрешении них*я не видно! Тема закрыта*
  4. Да это без проблем)) Кому как надо будет так и сделает, я всего лишь предоставил решение через которое можно очень много интересного сделать. В том числе аналогичную штуку как в Магенто, это тоже можно.
  5. Вы хоть сами понимаете о чем речь идет. "Минус жирный" :ugeek: - смешно. А причем тут вид в браузерах, это к мобилизации не имеет никакого отношения - это кроссбраузерность, а не мобильность. А у нас тут речь именно о мобильности. И об отображении сайта в мобильных браузерах речи вообще не было. Если руки не из *опы верстайте правильно и будет одинаково везде. Но здесь затронута тема именно мобильной версии сайта которая априори не может быть идентичной с полной версией. Я предоставил идею и реализацию мобильной версии сайта, a также толчок для развития мобильности Opencart. Использовать эти бесплатные знания дело каждого и предел применения ограничивается только фантазией разработчика. Так что свои тупые ответы наполнены смыслом "я один такой крутой, а автор темы толкает гавно" оставь при себе 8-).
  6. Ага есть такое...я пробовал ранее, то при смене в конфиге адреса к папке с картинками ничего не произошло, так как картинки он берет с кеша, а для кеша ссылка относительно того домена на котором непосредственно лежит сайт...вот тут я и застрял. А симлинк, если честно я не знаю как с ним работать...
  7. Все сложно, сначала хотели отдельную мобильную версию, но вроде 2 шопа в разных папках на 1 хосте, но на разных доменах, не могут работать с картинками товаров только из одного шопа (то есть они у каждого свои должны быть), ну а переписывать систему записи кеша и формирование ссылок на картинки я ну уж очень не захотел. Да и в дизайне выходило так, что контроллеры у стандартной версии и у мобильной должны слегка разную инфу выводить. А с мобильной версией как подмена шаблона до меня доперло лишь на 3е сутки с переадресацией на m.mystore.ru Вообщем как сделал, что бы на моб версии контроллеры выполняли какие нить другие функции, я использовал if с isMobile и соответственно сделал условия на отдельные функции, если обычная, то выполняем это, если моб то только то что для моб версии. Таким образом функциональная часть мобильной версии немного иная, скажем отсутствие фильтров, некоторых других модулей, отображение картинок в карточке товара как слайдшоу заточенного под тач девайсы и так далее. много всего. Кардинально отошли от того, что нарисовали изначально и сделали лучше ))) Конечно если бы надо было делать адаптивку, то там все ограничилось в js и css. Но тут правда и деньги другие чем за адаптивку, есть где разгуляться и немного по чудить. Скажем так мой первый опыт разработки именно мобильной версии на opencart, принес немного неожиданные плоды! Поскольку работаю по NDA, то не могу показать что вышло.
  8. В моем случае структура совпадает, скажу даже больше у мобильного шопа одна и таже база с обычным магазином, и в добавок нет админки, только через js удалены и реструктурированы блоки в верстке. А вот с URN можно подробнее...я еще не сильно хороший кодер..
  9. Все мы знаем как популярны сейчас 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 не очень удобно, так как нужно перепиливать готовый дизайн под себя. И нет ничего хуже ковырять чужой код.
  10. Нашел еще 1 небольшой косяк При постраничной навигации в категориях (или производителях не важно) при переходе скажем на страницу №3 ссылки назад "<" и в начало "|<", они сливаются. Решение: в файле system/library/pagination.php строка 38 строка '</a>'; В конце пробел добавить '</a> ';
  11. При добавлении товара в корзину у нас вылазит блок 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 исчез?
  12. Это потому что на версии 1.5.5.1 есть уже свой фильтр (во всех предыдущих не было) и автор видимо просто забил на проект, так как на новых версиях модуль не работает
  13. В версии 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'; } }); }
  14. Я же написал, "решение для себя, делать тестирование"
  15. Спасибо), но вот в этом случае сортировка в обратном порядке идет, с конца))
  16. Решение для себя, не в обиду разработчика релиза, но надо запускать отдельный бета тест на выявление ошибок. Решение проблемой с сортировкой описанной выше: в файле 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 так как там работает! спасибо за внимание.
  17. Только заметил вот какой косяк, при добавлении товара, во вкладке Связи, в полях - Главная категория, Показывать в категориях - нарушена сортировка категорий, в версии 1.5.4.1 все хорошо было. в 1.5.4.1 - Сортировка идет Категория родитель - вложенная - вложенная Категория родитель 2 - вложенная.... Начиная с 1.5.5.1 Сортировка непонятная совсем((( И Заданный порядок сортировки в категориях не срабатывает в этих полях при добавлении товара. Было замечено минимум на 5 сайтах
  18. Молодой человек, прежде чем бить себя в грудь и говорить"Да я, да то", ВНИМАТЕЛЬНО читайте что вам пишут! Где вы увидели слово "начинающий" ?. Если ваши эмоции не позволяют вам адекватно работать и оценивать ситуацию, обратитесь к специалисту, думаю поможет. Да и еще судя по количеству допущенных грамматических ошибок, могу предположить, что сайты у вас точно такие же. В дальнейшем продолжении нашей дискуссии не вижу смысла. Всего доброго.
  19. С претензиями начинающимися со слов "Че за фигня?", принципиально отвечать не буду. Рекомендую воздержатся от подобных высказываний и вопросы по работе модуля формировать более конструктивно. И еще раз, внимательно читайте описание модуля, что он делает!!! Модуль выводит товары из категории которую вы выбрали в настройках модуля в админ панели, без постраничной навигации.
  20. Все круто, вот только я не гуру .htaccess, при установке RewriteBase /shop (папка где находиться магазин), браузер выдает сообщение об Бесконечной переадресации.
  21. Это был бы один из самых простых путей, но SEO специалисты сказали, именно так надо, так лучшее в продвижении.
×
×
  • 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.