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

hook pre render Идея и примерная реализация


Recommended Posts

...то надо был двиг - удобный, с кучей модулей, простой php код, потому что разработка ведется после основной работы. Joomla ненавижу, друпал, зенд и др. посмотрл код и зразу от них отказывался: для знакомства с ними надо время, которого мало. Нашел OpenCart и понеслось...

Я понимаю, что всем хочется иметь супер крутой движок, который будет очень гибким у функциональным и в тоже время иметь простой код с которым можно разобраться за пол часа.. Но увы, это утопия (если кто-то считает что нет, пусть приведет пример такой системы)

А реальность такова, что чем гибче система, тем она сложнее в понимании. Взять например Друпал с его системой хуков, с помощью которых можно переопределить почти все.. но чтобы научиться программировать под эту систему нужно потратить не один месяц (а чтобы стать хорошим программистом и не один год)

Друпал и Опенкарт это 2 крайности. А истина она всегда где-то посередине. Тут нужно выбрать эту золотую середину. Например, следуя правилу Паретто - 20% хуков покроет 80% потребностей, а для остальных 20% нужно будет написать еще 80% хуков. Если реализовать все то получится Друпал, супер гибкий но и очень сложный. А можно добавить всего несколько хуков и получить достаточно гибкую систему не сильно ее усложняя.

...Почитав про симфони и оверрайды заинтересовался, интерестная идея, НО вам не кажется, что вы напишите столько оверрайдов и диспатчеров, что это будет больше тянуть на новый движок, чем просто дополнение к существующему коду?..

Симфони диспатчер подключается с помощью нескольких строк кода, новое событие добавляется с помощью 1-2 строк кода.. все. Зачем для 10 строк кода создавать новый движок?..
  • +1 1
Надіслати
Поділитися на інших сайтах

Да, я давно понял, что нету ничего универсального, гибкого и простого... к сожалению...

Симфони диспатчер подключается с помощью нескольких строк кода, новое событие добавляется с помощью 1-2 строк кода.. все. Зачем для 10 строк кода создавать новый движок?..

Безусловно, моя ошибка в том, что не опробовал на практике симфони + опенкарт, но я увидел пример про сокрытие статьи из списка через хук и ,опираясь на него, увидел проблему - это обычный костыль if (information['id'] == 3) пропустим статью и не отображаем. Только вот у симфони надо написать целый обработчик как себя вести в той или иной ситуации, с какими переменными работать и так далее, что, на мой взгляд, труднее, чем написать модуль для статей и определить для него параметры под свои нужды.

Может я не понял пример, но я понял вот его так - у меня есть модуль статей и я хочу выводить на каждой странице ленту статей по-своему: 1. в заданном мною порядке. 2. удаляя некоторые статьи из списка, 3. добавляя описание к статье(ко всем или конкретной), 4. делать ссылку или нет, 5. рейтинг статьи и т.д. Получается мне надо написать 5 хуков? Правильно?

Ладно, вернемся к проблеме и прекратим демагогию. Идея с симфони мне нравится, потому что это будет однозначно лучше, чем просто костыли в коде для реализации той или иной задачи.

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

Ладно, вернемся к проблеме и прекратим демагогию.

И что вы с проблемой собираетесь делать? Дальше обсуждать? Получится все та же демагогия :-). Она уже образуется. Все опять складывается в стиле "хотим как лучше, а получается как всегда".

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


Я начало сделал. Дальше это все нужно развивать, вперед! Я пока не имею достаточно времени, смогу поддержать минимум через неделю-полторы.

Что нужно сделать:

1. Допилить модуль :

- нужно добавить поддерку админки,

- сделать возможность установки через vqmod (чтобы упростить тестирование другим разработчикам)

- добавить несколько событий через vqmod (подумать где еще кроме рендера они будут полезны), на каждое событие отдельный vqmod (чтобы проще было потом добавлять другие события другим разработчикам)

- создать тестовый модуль с примерами использования событий.

- написать документацию (рус, анг)

2. Протестировать все

3. Выложить на оф сайт и если все нормально сделать то я уверен подтянутся другие разработчики, так как ниодного уважающего себя программиста не может устраивать vqmod, знаю таких очень много на оф.сайте.

Вперед, кому интересно развивать тему!

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

Думаю все "1.5 человека" заняты в коммерческих проектах, поэтому не паникуем, просто подписываемся на тему и ждем развития.

Я планирую в конце месяца заняться вопросом. Все что тут пишут читаю.

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

Думаю все "1.5 человека" заняты в коммерческих проектах, поэтому не паникуем, просто подписываемся на тему и ждем развития.

Я планирую в конце месяца заняться вопросом. Все что тут пишут читаю.

Тут все читают и пишут. А нужна стратегия и согласованность действия, а значит грамотная координация. А пока получается "кто в лес, кто по дрова". Например шаблон наблюдатель хороший шаблон ООП, но о имеет определенную область ЭФФЕКТИВНОГО использования (системы построенные на событиях, пользовательские или межсистемные интерфейсы например ну лили как здесь предлагают http://habrahabr.ru/post/136766/), которая в OC практически мало имеет места. Притянуть и пристроить его конечно можно, в научных целях, но практического применения это будет мало иметь. Тем более что опять возвращаемся к тому, от чего хотели уйти, а именно от модификации кода ядра и vQmod. То есть топчемся на месте. Так что паники на какой, пока все идет "как всегда" :-).

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


  • 10 months later...

Кстати, если кому интересно, решением для введения шаблона ООП Event-Observer может быть создание оберток для всех основных классов ОС с перехватом вызовов методов, и таким образом можно будет подцеплять вызовы функций до и после вызова методов, практически без модификации кода ОС (поменять можно только index.php для подключения wrapper).

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


  • 2 weeks later...

Кстати, если кому интересно, решением для введения шаблона ООП Event-Observer может быть создание оберток для всех основных классов ОС с перехватом вызовов методов, и таким образом можно будет подцеплять вызовы функций до и после вызова методов, практически без модификации кода ОС (поменять можно только index.php для подключения wrapper).

 

Люблю заниматься архитектурой приложений :)

Это как стратегическая игра. Увлекательно и интересно!

 

Уже пользуюсь (есть своя реализация)...

...

function __call($method, array $params)

...

:)

"Слушать" классы - самый лучший вариант избавиться от vqmod, при этом не "мешая" его работе

И index.php не зачем менять, лучше дописать (можно автоматом, в конец файла, даже пользователь не заметит) в конец controller/common/maintenance.php свой роутер обвертку  классов. И потом просто "слушать" классы и что надо менять до или после его работы.

Сейчас я пока  руками прописываю какие мне надо классы "слушать", меняю всё что захочу, там возможности изменения работы безграничны. Такой себе hook универсальный для opencart

 

Надо полноценный модуль такой сделать :) В настройках просто прописывать какой класс и метод слушать и как, до или после, и каким классом "менять" результаты или параметры. (связи). Тогда вообще просто свои модули будет подключать не изменяя файлов системы и без vqmod, при этом не "мешая" его работе.

 

P.S. А шаблон Event-Observer - предполагает на начальном этапе разработки ядра так делать, что в нашем случае не походит. Это шаблон проектирования ядра, а не обвертка уже готового

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

Кстати, если кому интересно, решением для введения шаблона ООП Event-Observer может быть создание оберток для всех основных классов ОС с перехватом вызовов методов, и таким образом можно будет подцеплять вызовы функций до и после вызова методов, практически без модификации кода ОС (поменять можно только index.php для подключения wrapper).

 

По сути sv2109 уже это сделал. Проблема в том, что это не имеет последствий для представления данных в шаблоне и сама шаблонизация организована так, что подключение дополнительных файлов с представлением данных усложнено до невозможности.

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

  • 2 weeks later...

По сути sv2109 уже это сделал. Проблема в том, что это не имеет последствий для представления данных в шаблоне и сама шаблонизация организована так, что подключение дополнительных файлов с представлением данных усложнено до невозможности.

 

Для шаблонизации оберточный вариант конечно не подходит. Если только не подменять вывод своим шаблонизатором :-).

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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