Joomla! Компонент CMS с Joomla! Фреймворк?

Мне интересно, как построить компоненты CMS поверх Joomla! Framework в основном потому, что я хотел бы, чтобы мои компоненты функционировали как автономные приложения.

Возможно ли это без хаков? Если нет, есть ли способ приблизиться к этому?

7 голосов | спросил Nestor Ledon 7 Maypm14 2014, 23:30:04

1 ответ


5

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

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

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

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

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

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

Вы вызываете JComponentHelper где-нибудь? Вы должны добавить поддержку для этого. Вы звоните в другой помощник для основного расширения, например com_content или com_users? Это больше не будет работать.

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


В завершение, на данном этапе, скорее всего, это будет связано с некоторыми типами взлома или копирования /вставки кода из CMS в необходимую вам инфраструктуру.

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

ответил David Fritsch 8 Mayam14 2014, 02:21:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132