
Блоги

Как сдвинуть интернет-магазина с места?
Взгляд на Opencart после Magento и других продвинутых систем
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% задач что ставлятса к кодингу доходит редко и економит просто уйму времени. С версткой аналогично создаеш блок и подтягиваеш в нужное место и живеш и радуешся жизни. Ну думал написать по больше но с временем не сложилось. Может потом добавлю что то.
Разница между redirect 301 и 302 о которой возможно вы не знаете
Тут долго думать не пришлось 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 по умолчанию.
Оптимизация подсчета товаров Hello Toporchillo
А я тогда говорил, что это бред! И правильно использовать второй полноценный запрос для getTotalProducts.
В 1.5 совсем плохо было с индексами и на небольших базах это возможно имело смысл. Но когда сейчас каждый второй магазин от 10 000 товаров, FULLSCAN всех таблиц участвующих в выборке товаров в категории и механизм FOUND_ROWS скорее вреден чем полезен и вот вам подтверждение с официального блога Percona https://www.percona.com/blog/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/ Учиться, учиться и еще раз учиться! (c)
Убираем дублированные слеши в адресах страниц
Но немногие заморачиваются с их устраненением.
Очень часто криворукие писатели дополнений не утруждают себя проверять код и в вашем магазине появляются ссылки вида http://vash_magazin//////какой_то_адрес/?id=какой то айди Убрать повторяющиеся слеши очень просто.
Достаточно добавить в .htaccess после rewrite base вот такой код: RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC] RewriteRule ^(.*) $1 [R=301,L]
Мульти добавление изображений к товару
/image/data/lproducts/55
где 55 это ID товара если же вы создаете новый товар и у него еще нет Айдишки тогда будет создан каталог по времени time(); Вот видео как работает: Если кому нужно пишите в коментах дам исходники. Тут канешно для Opencart 1.5 то если руки ровные тогда без проблем можно поставить и на 2.Х Гдето видел даже готовый плагин для этой цели правда он у меня не хотел работать!
Засвет пароля от mysql
А знаете вы что Даниэль сказал, что это не баг а фича ? https://github.com/opencart/opencart/issues/5027
Сколько стоит СЕО, а сколько нужно денег для открытия магазина.
Модуль Истории изменений (Change History)
"Change History" Представляет из себя модуль который сохраняет большенство изменений которые проходят в админ панели.
В общем мы имеем несколько параметров: Действие:
- Добавление
- Удаление
- Изменение
При использовании первых двоих вы получите отчет о том что было удалено + некоторые дополнительные данные такие как ID
При "изменении" вы получаете отчет о том какие параметры были изменены в таком варианте (Поле: было -> стало) дальше у нас есть Модули (Название (Поддерживаемые действия)
- Заказ (Удаление, добавление)
- Статусы заказа (изменение)
- Товары (добавление, изменение, удаление)
- Категории (добавление, изменение, удаление)
- Покупатели (добавление, изменение, удаление)
В отчете вы получаете такие поля
№ отчета / Имя Юзера / Модуль / Действие / дополнительные прамметры / дата
Также есть фильтр который позволяет отсортировать отчеты
Настройка Вы можете включить или отключить те модули которые хотите отслежывать (смт. Скрин) Также в процессе проектирования функция Recovery которая будет в будущем добавлена к функционалу данного модуля
Жду ваших комментариев и пожеланий
Почему интернет-магазин не продает
Заблуждение о "Безлимитно Сайтов"
Начну с того что сам повелся на такую акцию. Мы купили хостинг с такими характеристиками:
ЖД SSD – НЕ ОГРАНИЧЕНО,
Количество сайтов – НЕ ОГРАНИЧЕНО,
ОЗУ: 1 GB,
Цена составила 330грн/мес. (730р/мес.)
Ну как для одного не большого интернет магазина с 1к трафика в день и 3к товарами должно было хватить тем более меня уверяли что все будет работать отлично.
Скажу сразу что я очень лояльно ставлюсь к данному хостингу («Unihost» рефф. Силка) и не хочу показать какое то негативное мнение насчет него я активно пользуюсь его услугами и такие ситуации встречал и на других хостингах.
Ну казалось все хорошо работало и не было никаких проблем.
Но тут мы начали делать еще один проект и когда стал вопрос о том где его разместить мы вспомнили о том что у нас есть хостинге где можно поставить еще файлы так как диск был неограничен проблем не должно было быть но когда мы развернули проект через месяц мы заметили что оба сайта начали подвисать и тогда мы начали искать причину этого и добрались к логам производительности и оказалось что нам просто не хватает ресурсов после общение с тех. поддержкой о казалось что у всех сайтов одни ресурсы то есть наш 1 ГБ ОЗУ был на два сайта. Также я пообщался с другими хостингами и оказалось у них такая же ситуация, я вполне понимаю что это был сугубо наш косяк и не имею претензий к хостингу просто хочу вам рассказать возможно это вам когда то поможет сделать правильный выбор. И старайтесь не экономить при выборе хостинга или сервера это та часть где лучше заплатить больше если вы хотите создать не сайт визитку. Просто помните в большинстве случаев вы получаете общие ресурсы на все сайты хоть их там 5, 10 или 100.
Проблемы с неправильной релевантной страницей Yandex привет
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу