web-dev-qa-db-ja.com

Joomla! Joomla!のCMSコンポーネントフレームワーク?

Joomlaの上にCMSコンポーネントを構築することに興味があります!フレームワークは、主にコンポーネントをスタンドアロンアプリケーションとして機能させたいためです。

これはハックなしで実行できますか?そうでない場合、これに取り組むための優先的な方法はありますか?

7
Nestor Ledon

この質問に決定的に答えることは不可能ですが、コードの移植でつまずく可能性のある最も一般的な部分のいくつかを試してみる価値はあると思います(かなりの数になるでしょう)。

詳細に入る前に、あなたの見方によっては、これらすべてをハックと見なすことができます。 CMSとフレームワークは、コンポーネントの観点とは大きく異なります。 CMSは、使用する正確な構造を定義します。フレームワークは、アプリケーションの実行方法と対話方法をカスタマイズできるように設計されています。フレームワークはCMSからコンポーネントを実行するように設計できますが、ある時点でこれはCMSを再作成するだけであり、無意味に思えます。

まず、非常に短くてシンプルな答え:コンポーネントがCMSとやり取りするすべての方法をやり直す必要があります。ルーターを追加する必要があり、おそらく名前空間または新しいオートローダーを追加する必要があります。

この後半から始めましょう。おそらく、Joomlaフレームワークでcomposerを使用しているため、必要に応じてクラスをロードするコンポーザーのオートローダーに頼ることができます。これは、ネームスペース内で実行し、それに基づいてロードするように設計されています。コンポーネントがオートロードされないようにしています(私はこれを推測しているので、より良い方法がある場合は、コメントしてください)。これは、MVCクラス用の独自のオートローダーを追加するか、名前空間でそれらを書き換える必要があることを意味します。

次に、独自のルーターファイルをアプリケーションに追加する必要があります。メニューマネージャーがなくなったので、ルータークラスを使用してこれを再作成する必要があります。これは実際にはURLをコントローラーにマップするのはかなり簡単ですが、これがアプリケーション内にあることを確認する必要があります。

最後に、コンポーネントで使用するすべてのCMS機能をサポートする必要があります。頭に浮かぶのは、JFactoryです。そのクラスを呼び出してセッション、データベース、またはドキュメントを取得するスクリプトは機能しません。 (そのクラスを移植し、アプリケーションに合わせてそのフックを再定義しない限り。

どこかでJComponentHelperを呼んでいますか?そのためのサポートを追加する必要があります。 com_contentやcom_usersなどのコア拡張機能の別のヘルパーを呼び出しますか?それも機能しなくなります。

フレームワークで簡単な拡張機能を簡単に実行できます。多くの方法でCMSにフックするものは、基本的にすべての部分を実行するためにCMSを再構築する必要があります。この部分は本当に拡張機能に依存します。


最後に、この段階では、CMSから必要なフレームワークへのハッキングまたはコードのコピー/貼り付けが含まれる可能性があります。

CMSは、これを容易にするフレームワークの構造(つまり、composerを使用する、名前空間を使用するなど)とより一致するようになると思います。しかし、現在、それはかなり困難な作業です。

5
David Fritsch