Перейти к содержанию
Dprojectdeveloper

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

Рекомендуемые сообщения

Начал изучать 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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я еще не успел закончить, сейчас таблицу маршрутизации написал, ну и ЧПУ. Сейчас на сайт для сайта применю и выложу demo версию...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообщем я отказался от использования данной 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 пользователей онлайн

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

×

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

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