Joomlaの上にCMSコンポーネントを構築することに興味があります!フレームワークが主な理由は、コンポーネントをスタンドアロンアプリケーションとして機能させたいからです。
これはハックなしで実行できますか?そうでない場合、これにアプローチするための優先される方法はありますか?
Joomlaの上にCMSコンポーネントを構築することに興味があります!フレームワークが主な理由は、コンポーネントをスタンドアロンアプリケーションとして機能させたいからです。
これはハックなしで実行できますか?そうでない場合、これにアプローチするための優先される方法はありますか?
回答:
この質問に決定的に答えることは不可能ですが、コードの移植でつまずく可能性がある最も一般的な部分のいくつかを試してみる価値はあると思います(そしてかなりの数になるでしょう)。
詳細に入る前に、あなたの見方によっては、これらすべてをハックと見なすことができます。CMSとフレームワークは、コンポーネントの観点とは大きく異なります。CMSは、使用する正確な構造を定義します。フレームワークは、アプリケーションの実行方法と対話方法をカスタマイズできるように設計されています。フレームワークはCMSからコンポーネントを実行するように設計できますが、ある時点でこれはCMSを再作成するだけであり、無意味に思えます。
まず、非常に短くてシンプルな答えです。コンポーネントがCMSとやり取りするすべての方法をやり直す必要があります。ルーターを追加する必要があり、おそらく名前空間または新しいオートローダーを追加する必要があります。
この後半から始めましょう。奇妙なことに、Joomlaフレームワークでcomposerを使用しているため、必要に応じて、composerのオートローダーがクラスをロードすることを期待できます。これは名前空間内で実行され、それに基づいてロードされるように設計されているため、コンポーネントは自動ロードされません。(私はこれを推測しているので、より良い方法がある場合は、誰かがコメントしてください。)これは、MVCクラスに独自のオートローダーを追加するか、名前空間でそれらを書き直す必要があることを意味します。
次に、独自のルーターファイルをアプリケーションに追加する必要があります。メニューマネージャーがなくなったので、ルータークラスを使用してこれを再作成する必要があります。これは実際にはURLをコントローラーにマップするのはかなり簡単ですが、これがアプリケーション内にあることを確認する必要があります。
最後に、コンポーネントで使用するすべてのCMS機能をサポートする必要があります。頭に浮かぶ最大のものはJFactory
です。そのクラスを呼び出してセッション、データベース、またはドキュメントを取得するスクリプトは機能しません。(そのクラスを移植して、アプリケーションに合わせてそのフックを再定義しない限り。
JComponentHelper
どこかに電話しますか?そのためのサポートを追加する必要があります。com_contentやcom_usersなどのコア拡張機能の別のヘルパーを呼び出しますか?それも機能しなくなります。
フレームワークでいくつかの単純な拡張機能を簡単に実行できます。多くの方法でCMSにフックするものは、基本的にすべての部分を実行するためにCMSを再構築する必要があります。この部分は本当に拡張機能に依存します。
最後に、この段階では、CMSから必要なフレームワークへのコードのハッキングまたはコードのコピー/貼り付けが含まれる可能性が最も高くなります。
CMSは、これを容易にするフレームワークの構造(つまり、composerを使用する、名前空間を使用するなど)とより一致するようになると思います。しかし、現在、それはかなり困難な作業です。