Перейти к содержанию
  • записей
    5
  • комментария
    32
  • просмотра
    1 213

Записи в этом блоге

 

Взгляд на Opencart после Magento и других продвинутых систем

Добрый день. Немного истории вот где то года три назад я начал свой путь в работе с Opencart. Скажем так полюбил я Opencart всем сердцем. Но в один солнечный день мне пришел лист о том что я прошел собеседование в относительно большую IT кампанию. И с того дня мой взгляд на хороший код изменился...  Вот не так давно меня попросили немного доработать функционал на OC. Мне не сложно в принципе вот я и приступил к работе. Я сидел и говорил себе Боже как я раньше с этим работал.   Ну теперь давайте я вам попробую описать то что меня возмутило.   1. Удобство разработки и интеграция в IDE Да когда я работал с Sublime Text все было вроде гуд. Но уже полгода работаю через PhpStorm (PS. Лицензия есть даже на домашнем ПК а не только на работе). При запуске сразу получаем кучу предупреждений. Давайте взглянем на простой класс http://joxi.ru/52alLM0UGzO1Om Причин тут две:
1) Отсутствие PhpDoc 2) Упрощенная структура самой CMS Ну если добавить PHPDoc то большую часть проблем это реши. 
Зачем нужен PHPDoc ??
Я напишу коротко если будет интересно загуглите. 1) Это читабельность кода
2) Автокомплит и информация о методах на лету  http://joxi.ru/brRZkROHQveeLr как не крути сразу видно что и как надо передавать тому или другому методу или то что он возвращает. Или же увидеть ошибку на моменте написания кода а не запуска.   2) Это наверное бесит меня на данный момент больше всего. Это дублирования кода. Хотя Опенкарт и как бы MVC но он нарушает один из принципов MVC потому что с дублирование кода тут просто беда. Давайте посмотрим на один из контроллеров админ панели. http://joxi.ru/nAyKdw3tXz1oVm 
И это один из множества примеров. который есть в каждом файле я молчу о генерации $url вот пример из файла файла покупателя. Этот кусок кода встереатся в одном файле 9 раз. ????? 
Давайте посчитаем: 9 * ~40 строк = ~360 строчек кода которые можно отрефакторить к 20 максимум и будет один метод для всех файлах а в контролере это будет одна строка вместо 40   $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_email'])) { $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_customer_group_id'])) { $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['filter_approved'])) { $url .= '&filter_approved=' . $this->request->get['filter_approved']; } if (isset($this->request->get['filter_ip'])) { $url .= '&filter_ip=' . $this->request->get['filter_ip']; } if (isset($this->request->get['filter_date_added'])) { $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } А теперь представте волшебство Если бы можна было бы так $url = $this->url->saveUrlParametrs('filter_name', 'filter_email', 'filter_customer_group_id'); И подобных ситуаций уйма. Про дублирование верстки я молчу вообще. Чтоб добавить чтото к товару нада єто продлублировать в 100500 файлах.
В мадженте к примеру страница редактирования или список в админке создается с помощью двох XML файлов где просто описиваются конфигурации и єтими конфигами можна решить около 75% задач что ставлятса к кодингу доходит редко и економит просто уйму времени. С версткой аналогично создаеш блок и подтягиваеш в нужное место и живеш и радуешся жизни.   Ну думал написать по больше но с временем не сложилось. Может потом добавлю что то.
 

konorws

konorws

 

Модуль Истории изменений (Change History)

Добрый день хочу представить вам небольшой обзор модуля который почти завершен и находится на этапе тестирования.
"Change History" Представляет из себя модуль который сохраняет большенство изменений которые проходят в админ панели.
В общем мы имеем несколько параметров:  Действие: 
- Добавление
- Удаление
- Изменение
При использовании первых двоих вы получите отчет о том что было удалено + некоторые дополнительные данные такие как ID
При "изменении" вы получаете отчет о том какие параметры были изменены в таком варианте (Поле: было -> стало)  дальше у нас есть Модули (Название (Поддерживаемые действия)
-  Заказ (Удаление, добавление)
-  Статусы заказа (изменение)
- Товары (добавление, изменение, удаление)
- Категории (добавление, изменение, удаление)
- Покупатели (добавление, изменение, удаление)
  В отчете вы получаете такие поля
№ отчета / Имя Юзера / Модуль / Действие / дополнительные прамметры / дата
Также есть фильтр который позволяет отсортировать отчеты
  Настройка Вы можете включить или отключить те модули которые хотите отслежывать (смт. Скрин)   Также в процессе проектирования функция Recovery которая будет в будущем добавлена к функционалу данного модуля
Жду ваших комментариев и пожеланий

konorws

konorws

 

Мульти добавление изображений к товару

Добрый день. Вот делал небольшую задачу основной целью которой было ускорить и упростить наполнения товаров.  Одно из самых раздражающих есть добавление изображений поэтому я добавил небольшой скрипт основан на скрипте uploadify  Суть в том что загрузка и добавление происходит в 2 клика. Причем картинки сортируются в свои каталоги примером вот так 
/image/data/lproducts/55
где 55 это ID товара если же вы создаете новый товар и у него еще нет Айдишки тогда будет создан каталог по времени time(); Вот видео как работает:   Если кому нужно пишите в коментах дам исходники. Тут канешно для Opencart 1.5 то если руки ровные тогда без проблем можно поставить и на 2.Х Гдето видел даже готовый плагин для этой цели правда он у меня не хотел работать!

konorws

konorws

 

Заблуждение о "Безлимитно Сайтов"

Добрый день. Хочу вам рассказать том что вы получаете когда выбираете хостинг на котором вам разрешают устанавливать несколько сайтов а в некоторых случаях и неограниченное количество сайтов.
Начну с того что сам повелся на такую акцию. Мы купили хостинг с такими характеристиками:
ЖД SSD – НЕ ОГРАНИЧЕНО,
Количество сайтов – НЕ ОГРАНИЧЕНО,
ОЗУ: 1 GB,
Цена составила 330грн/мес. (730р/мес.)
Ну как для одного не большого интернет магазина с 1к трафика в день и 3к товарами должно было хватить тем более меня уверяли что все будет работать отлично.
Скажу сразу что я очень лояльно ставлюсь к данному хостингу («Unihost»  рефф. Силка) и не хочу показать какое то негативное мнение насчет него я активно пользуюсь его услугами и такие ситуации встречал и на других хостингах.
Ну казалось все хорошо работало и не было никаких проблем.
Но тут мы начали делать еще один проект и когда стал вопрос о том где его разместить мы вспомнили о том что у нас есть хостинге где можно поставить еще файлы так как диск был неограничен проблем не должно было быть но когда мы развернули проект через месяц мы заметили что оба сайта начали подвисать и тогда мы начали искать причину этого и добрались к логам производительности и оказалось что нам просто не хватает ресурсов  после общение с тех. поддержкой о казалось что у всех сайтов одни ресурсы то есть наш 1 ГБ ОЗУ был на два сайта. Также я пообщался с другими хостингами и оказалось у них такая же ситуация, я вполне понимаю что это был сугубо наш косяк и не имею претензий к хостингу просто хочу вам рассказать возможно это вам когда то поможет сделать правильный выбор. И старайтесь не экономить при выборе хостинга или сервера это та часть где лучше заплатить больше если вы хотите создать не сайт визитку. Просто помните в большинстве случаев вы получаете общие ресурсы на все сайты хоть их там 5, 10 или 100.  
 

konorws

konorws

 

Разница между redirect 301 и 302 о которой возможно вы не знаете

Добрый день.  Вот не так давно столкнулся с одной фичей 301 редиректа если честно я несколько часов не мог понять в чем прикол а потом все добрый дядя Google дал мне ответ.   С чего все началось. Ко мне написал старый заказчик с просьбой поправить страницу заказа. А именно перекидать пользователя без авторизации на страницу самой авторизации (зачем ? это уже другая история скажу сразу у него движок не Opencart а самопис какой то). 
Тут долго думать не пришлось 3 строчки кода (Буду приводить код Opencart что бы было более понятно)
Ну вставил я этот код: if(!$this->customer->isLogged()){ $this->response->redirect($this->url->link('account/login')); } Ну думаю проверю на всякий случай. И вот скидаю куки и захожу на страницу заказа оп и все работает.)))) Думаю ладно попробую еще авторизацию пройти. 
Логинюсь на сайте - идем на страницу оформления - оп и я на странице авторизации с ошибкой доступа
  Я немножко афигел.  Давай копать проврил код все нормально все верно. Убрал код из файла и оп ляля а Ридерект остался причем в любой ситуации перекидивает. 
Я начал колдовать искал убирал скидивал кеш и нифига.  
И тут я заглянул в файл редиректа и вот какую строчку я там обнаружил header("HTTP/1.1 301 Moved Permanently"); Уточнил у заказчика откуда он там взялся (пришлось обяснить сначала что он значит и делает). Как оказалось им какая то СЕО прога сказала что на сайте есть 302 редиректы и это не правильно и они решили все перевести в 301.
Думаю окей ваши тараканы.     Закомментил эту строчку проблема осталась.    Начал гуглить, гуглить, гуглить, ........... И на дном из тикетов поддержки Google Chrome я нашел ОТВЕТ:
Как оказалось браузеры кешируют 301 редирект и при повторном вызове УРЛ сразуже перенаправлять на кешированный УРЛ.  Причем не только Google Chrome а и другие браузеры также.   Итоги:
Для внутришних редеректов сайта всегда используйте 302 редирект который используется в PHP по умолчанию.

konorws

konorws

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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