Joomlaで理解できることは、特定のビューのメニューを作成するまでは、次のようにそのビューへのコンポーネントリンクが取得されるということです。
component/component_name/location/new-york (ex #1)
このビューのリンクを作成すると、次のように、メニューエイリアス+ビュー+アイテム名またはIDに変換されます。
/locations/location/new-york (ex #2)
ただし、これを実行しても、例1のように古いリンクがまだ取得されています。リンクにItemidを追加すると、例2のように期待どおりの結果が得られますが、以下の意味を参照してください。
JRoute::_('index.php?option=com_modern_tours&view=location&alias=' . $asset->alias .'&Itemid=138');
これはこれに変換されます_/locations/location/new-york
_
でもこれは
JRoute::_('index.php?option=com_modern_tours&view=location&alias=' . $asset->alias);
これはこれに変換されます_component/component_name/location/new-york
_
この場合、メニューを検索して不足しているitemidを追加するための追加の関数を作成する必要があるようです。これが実際にどのように機能するか、またはJoomla自体がこれを理解する必要があるかどうかはわかりませんが?誰かがこれを説明してくれませんか
JRoute::_()
は何も見つかりません。非SEFリンクをSEFに変換するだけです。その方法は、コンポーネントのルーターによって異なります。コンポーネントが最新のルーティング(3.7で導入されたと思います)を実装していない限り、Itemid
を見つける必要があります。
最新のルーティングの前は、各Joomlaコアコンポーネントは独自のルートヘルパークラスを使用してメニュー項目を検索し、IDを見つけて非SEF URLに追加していました。最新のルーティングでは、これがルールセットの一部として含まれているため、コンポーネントごとにこれを記述する必要はありません。