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

Не дороботки в проектировании OpenCart


Dprojectdeveloper

Recommended Posts

Начал изучать OpenCart архитектуру. Нашел несколько неточностей. Не вижу смысла в классе Loader в методах config language и database. Например для загрузки языкового файла из контроллера можно осуществить двумя способами $this->language->load('имя файла языка'); а так же $this->load->language('имя языкового файла'); смысл во втором когда есть первый. Так же не могу понять почему helper не заносится в объект registery, а вот модели заносятся не логично как то, тоже самое с библиотеками они тоже не заносятся в объект registery после загрузки. Так же не могу понять почему мы например объект Action тоже не заносим в объект Registery. Я сейчас составляю UML этой CMS, думаю еще возникнут вопросы спрошу здесь.... Хочу написать хороший интернет магазин на ней в целом CMS очень даже не чего... А так же пользовательский обработчик ошибок из index.php логично для него выделить отдельный класс и сделать список вызовов для отладочной информации, а еще лутше еще распечатка класса где произошла ошибка.

Надіслати
Поділитися на інших сайтах


Так же не могу понять смысл в классе Action в конструкторе вот этой строчки кода

str_replace('../', '', $route). В итоге что получается мы можем обратиться к контроллеру http://demo.myopencart.ru/index.php?rou ... ry&path=20 не проще ли написать регулярное выражение на допустимые символы если нет допустимых символов то кидаем 404 ошибку, а так куча дублированного контента хотя о дублированном контенте здесь вообще отдельная тема

Надіслати
Поділитися на інших сайтах


Не понимаю почему используется для получения списка модулей модель checkout/extension ??? Причем сдесь checkout? Не логично получается что папки для моделей оформления заказа, есть возможность получения информации о модулях... Поидее файл extenstion.php логичней переместить либо в директорию /model либо /model/modules но не как не checkout/

Надіслати
Поділитися на інших сайтах


Как думаете есть ли смысл для админки и для пользовательской части создавать 2 почти одинаковые входные точки? Или же лутше ограничиться одной что даст общий доступ ко всем моделям сайта и представлениям???

Надіслати
Поділитися на інших сайтах


У всех интернет-магазинов есть свои преимущества и недостатки... И очень хорошо, что Вы решили серьезно подойти к этому вопросу. Если Вас не затруднит оставьте здесь и диаграмму UML ;)

Надіслати
Поділитися на інших сайтах


foreach ($parts as $part) { 

$path .= $part;

if (is_dir(DIR_APPLICATION . 'controller/' . $path)) {

$path .= '/';

array_shift($parts);

continue;

}

if (is_file(DIR_APPLICATION . 'controller/' . str_replace('../', '', $path) . '.php')) {

$this->file = DIR_APPLICATION . 'controller/' . str_replace('../', '', $path) . '.php';

$this->class = 'Controller' . preg_replace('/[^a-zA-Z0-9]/', '', $path);

array_shift($parts);

break;

}

if ($args) {

$this->args = $args;

}

}

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

Надіслати
Поділитися на інших сайтах


У всех интернет-магазинов есть свои преимущества и недостатки... И очень хорошо, что Вы решили серьезно подойти к этому вопросу. Если Вас не затруднит оставьте здесь и диаграмму UML ;)

Я уже 20% этого интернет магазина переписал полностью, всякий ненужный функционал вообще убрал налоги размеры товара и т д, методы оплаты убрал методы доставки сейчас делаю быстрое оформление заказа что бы на одной страницы можно было все оформить... Зачем клиенту делать 3 клика для оформления заказа это бред пролный должно все в один клик оформляться что бы клиент не ушел из магазина....
Надіслати
Поділитися на інших сайтах


Я уже 20% этого интернет магазина переписал полностью, всякий ненужный функционал вообще убрал налоги размеры товара и т д, методы оплаты убрал методы доставки сейчас делаю быстрое оформление заказа что бы на одной страницы можно было все оформить... Зачем клиенту делать 3 клика для оформления заказа это бред пролный должно все в один клик оформляться что бы клиент не ушел из магазина....

Стоп!

А зачем размеры товара убирать? Бррр, ну не нужна опция, не заполняй!

А Налоги? Может в России, это не так актуально, но многие используют магазины для разных целей, к тому же налог можно отключить!

По поводу быстрого оформления, вопрос спорный, 3 шага наверное много, но 2 самый раз, а лучше всего реализовать, это на Ajax. Когда следующий шаг появляется, после предыдущего на одной странице без перезагруза, так сделан к примеру cs-cart.

Люди в Раше очень тупые и имеют рабскую психологию, поэтому не факт, что тому кто хочет видеть все на одной странице, другому это подойдет! У нас нужно каждый шаг рассусоливать! Иногда впечатление, что клиента по дулом пистолета или электрошоком заказ заставляют сделать и если вот он сейчас кнопку нажмет, его наверное кончат или компютер взорвется и оторвет ему бошку!!! :mrgreen:

Но, это так, лирическое отступление...

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

По бреду, не знаю, не знаю, но делает этот движок почти один человек, поэтому требовать от него отсутствие ошибок или понимания его логики, сложно! Напиши ему, будет время ответит!

А еще лучше, сделать все тоже самое самому! Чтобы уже другие искали твои ошибки и критиковали, какой это бред!!! ;)

Надіслати
Поділитися на інших сайтах


Я уже 20% этого интернет магазина переписал полностью, всякий ненужный функционал вообще убрал налоги размеры товара и т д, методы оплаты убрал методы доставки сейчас делаю быстрое оформление заказа что бы на одной страницы можно было все оформить... Зачем клиенту делать 3 клика для оформления заказа это бред пролный должно все в один клик оформляться что бы клиент не ушел из магазина....

Стоп!

А зачем размеры товара убирать? Бррр, ну не нужна опция, не заполняй!

А Налоги? Может в России, это не так актуально, но многие используют магазины для разных целей, к тому же налог можно отключить!

По поводу быстрого оформления, вопрос спорный, 3 шага наверное много, но 2 самый раз, а лучше всего реализовать, это на Ajax. Когда следующий шаг появляется, после предыдущего на одной странице без перезагруза, так сделан к примеру cs-cart.

Люди в Раше очень тупые и имеют рабскую психологию, поэтому не факт, что тому кто хочет видеть все на одной странице, другому это подойдет! У нас нужно каждый шаг рассусоливать! Иногда впечатление, что клиента по дулом пистолета или электрошоком заказ заставляют сделать и если вот он сейчас кнопку нажмет, его наверное кончат или компютер взорвется и оторвет ему бошку!!! :mrgreen:

Но, это так, лирическое отступление...

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

По бреду, не знаю, не знаю, но делает этот движок почти один человек, поэтому требовать от него отсутствие ошибок или понимания его логики, сложно! Напиши ему, будет время ответит!

А еще лучше, сделать все тоже самое самому! Чтобы уже другие искали твои ошибки и критиковали, какой это бред!!! ;)

Ты имеешь ввиду Российскую сборку делает один человек или то что сам проект http://www.opencart.com/ написал один человек? Удаляю что бы лишние библиотеки не загружать так как мне этого не нужно. Модули добавлять можно будет но сам движок его архитектуру сохранить уже не возможно, так как там есть недоработки...
Надіслати
Поділитися на інших сайтах


Кто нить может объяснить зачем информацию о выбраном языке и о валютах одновременно записывать в сессию и в куки файлы??? Неужели недостаточно записать либо в сессию либо в cookie?

public function set($currency) {
    	$this->code = $currency;

    	if ((!isset($this->session->data['currency'])) || ($this->session->data['currency'] != $currency)) {
      		$this->session->data['currency'] = $currency;
    	}

    	if ((!isset($this->request->cookie['currency'])) || ($this->request->cookie['currency'] != $currency)) {
	  		setcookie('currency', $currency, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
    	}
  	}
Надіслати
Поділитися на інших сайтах


Вот именно, данную критику и претензии, лучше высказывать там http://www.opencart.com/ или связаться с управляющим данного проекта, думаю ему ваша помощь понадобится очень кстати.

Надіслати
Поділитися на інших сайтах


Вот и сразу пропал!

Нет же, выложить здесь модификации и дополнения, сделать Доброе дело, нет же, как критиковать, все готовы, как что-то полезное сделать, сразу в угол... ;) :mrgreen:

Надіслати
Поділитися на інших сайтах


Вообщем я отказался от использования данной CMS системы по следующим причинам:

1) Из за неграмотной архитектуры.

2) Из за кривого кода в некоторых модулях

3) Из тупой инициализации

4) Толстых тупых и уродливых контроллеров (ТТУК)

...

Сейчас пишу свою систему на базе MVC

Надіслати
Поділитися на інших сайтах


Вообщем я отказался от использования данной CMS системы по следующим причинам...

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

Многое в опенкарте меня самого смущает... Делаешь проект и вместо того, чтоб работать в основном с "представлением", приходится лезть в контроллеры, в модули, чтоб тупо что-то поправить. Потом, чтоб обновиться на новую версию ядра - адский труд.

Например, с реврайтом урлов. При включенном SEO, если ходить на товар из каталога - ссылки идут /раздел/товар/ А если кликать из корзины или других модулей - там короткий урл /товар/. Пришлось лесть во все контроллеры и в модули, чтоб там ссылки приводить к общему знаменателю /раздел/товар/ И так сделал везде - в модулях, в вендорах, в поиске...

Также нет тут нормального модуля на контента, чтоб было с разделами и нормальным ЧПУ.

Самому писать с нуля e-shop, пусть даже с использованием ZF не особо хочется. Смысл ради одного магазина писать целую систему.

Надіслати
Поділитися на інших сайтах


В этом OpenCart даже MVC не правильно реализована о чем тут можно говорить... Это не фига не MVC это какой то непонятный и тупой гебрит. Joomla и то в плане архитектуры грамотнее написана, прошу заметить сама Joomla а не те компоненты которые к ней представляются они написаны очень тупо... Вопрос с урлми должен решаться очень просто в методе диспетчер должна подгружаться карта доступных урлов и уже объект диспетчер должен генерировать в соответствии с этой картой определенное действие. И представление должно зависить от модели предметной области, в модели предметной области должны быть наблюдатели патерн Observer которые отслеживают изменения и оповещают о них соответствующее представление. В моделях предметной области должна содержаться вся бизнес логика. А контроллер он всеголишь тонкий клиент он должен просто пинать соответствующее модели и представления.....

Надіслати
Поділитися на інших сайтах


Вообщем я отказался от использования данной CMS системы по следующим причинам:

1) Из за неграмотной архитектуры.

2) Из за кривого кода в некоторых модулях

3) Из тупой инициализации

4) Толстых тупых и уродливых контроллеров (ТТУК)

...

Сейчас пишу свою систему на базе MVC

Что и следовало ожидать! :lol:

Сказали же, пишем в http://www.opencart.com/

Второе, покажи мне что-то более интересное и разумное, может я пойду туда!?

И третье, твои программерские изыски мало кого волнуют, магазины пишутся для пользователей, а им важная функциональность и простота использования!!!

Все остальные или платные с частично закрытым кодом или не дают даже половины функционала!

Надіслати
Поділитися на інших сайтах


Ну раз уж тема перешла во флейм ...

На самом деле Dprojectdeveloper не прав всего лишь в одном... Он забыл что идеальный газ только в учебнике физики. У ЛЮБОГО продукта есть свои достоинства и недостатки. У ЛЮБОЙ фичи есть удобство за которое приходится платить либо громоздким кодом либо костылявостью. Простой пример, сегодня заказчик попросил меня сделать автоматическую смену статусов чтобы если товаров на складе 0 автоматом менялся статус на "Нет в наличии" и соответственно если количество обновляется до 1 и больше менялся на "Есть на складе". Другие статусы типа "Привезем через пару дней" в его логику бизнеспроцессов не укладываются. Он как продажник твердо убежден что пользователю НЕ НУЖНО это все типа привезем через неделю. Пользователю интернет-магазина. Конечно я поставил костыль, причем прямо в модель. Но я даже пытаться написать в комьюнити о том, что давайте пацаны смастерим патч не буду т.к. отчетливо понимаю что это моя частная задача которую я решил умело поставленным костылем. Поэтому пусть лучше у меня будет некая свобода и люфт для этих костылей потому как когда 2-3 однотипных костыля уже вырисовывается понимание какой нужен глобальный апдейт чем брэйнфак со сферическими конями в вакууме.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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