カスタムコンポーネントルーターを作成しようとしています。私はこれらの管理者とサイトのURI構造を持っています:http://localhost/administrator/index.php?option=com_{component_name}&...
およびhttp://localhost/index.php/{language_code}/{an_alias}/...
。これらのURI構造をプログラムで取得する方法はありますか?管理部分は大丈夫ですが、サイト部分によって私は失われます。生成されたエイリアスでメニューポイントを追加できますが、これは予測できません。 joomlaサイトルーターからこの情報を取得する方法、またはメニューポイントに制約を適用する方法はありますか?
現在、私はcom_example/views/example/tmpl/default.xml
:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_CANTEEN_TITLE">
<message><![CDATA[COM_CANTEEN_DESCRIPTION]]></message>
</layout>
</metadata>
これは、コンポーネントを指すサイトメニューポイントを追加するのに十分です。これに多言語のメニューポイントのタイトルとエイリアスを追加するといいでしょう。そのため、別のエイリアスでメニューポイントを追加することはできません。実際には、コンポーネントでMVC構造を追跡したくありません。エントリからのリクエストをルーティングして処理したいので、com_example/example.php
。このテンプレートxmlファイルをcom_example/Example/presentation/menupoints/
可能であれば。
ルーターを使用してコンポーネントを検索し、コンポーネントの基本URIを作成することができます。
_$application = JFactory::getApplication();
$router = $application->getRouter();
$componentUri = $router->build('index.php?option=com_example');
_
エイリアスを使用してコンポーネントのメニューポイントを定義した場合、これは管理ページでは_/administrator/index.php?option=com_example
_を返し、サイトページでは_/index.php/en/alias
_のようなものを返します。メニューポイントを使用せずに_/index.php/en/?option=com_example
_ URIを使用してサイトにアクセスすると、このソリューションが適切に機能しないという欠点があります。 404ページにつながる_/index.php/en/component/example/
_のようなものを返します。 URIを含むエイリアスでサイトページにアクセスしようとしている限り、これは実際の問題ではありません。
まったく同じことを行うJRoute::_('index.php?option=com_example')
コードを使用する別の代替方法。
デフォルトでは、アプリによってインスタンス化されたレガシーコンポーネントルーターがありますが、それを使用する必要はありません。代わりにカスタムルーターを作成することにし、必要な情報を使用してコントローラーとアクションに注釈を付けました。したがって、このアプローチはJava REST Webサービスに似ています)。
Xmlファイルを移動するための解決策を見つける時間がなかったので、今は優先事項ではありません。