イベントのリストを含むページを生成するカスタムコンポーネントと、イベントの詳細を提供するページがあります。以前は、リストページを処理するためのメニュー項目を1つ設定していました。
Code: JRoute::_('index.php?Itemid=102&component=com_event&view=events');`
Result: /index.php?Itemid=102&option=com_event&view=events
SEF: /events
特定のイベントの詳細のURLを処理するには、以下を使用するだけです。
Code: JRoute::_('index.php?component=com_event&view=event&id=1');
Result: /index.php?Itemid=102&option=com_event&view=event&id=1
SEF: /events/event/1
Joomla 3.8.4以降:
Code: JRoute::_('index.php?component=com_event&view=event&id=1');
Result: /index.php?option=com_event&view=event&id=1
SEF: /components/com_events/event/1
Itemidは自動的に含まれなくなりました。これにより、メニュー項目のアクティブなチェックで問題が発生します。手動でItemidを含めるようにJRouteのすべての単一インスタンスを編集する以外にこれを修正する方法はありますか?
Joomla 3.8.4のルーティングにバグがあるようです。これは既知の問題であり、現在Githubで議論されています。
https://github.com/joomla/joomla-cms/issues/19496
他の場所では、(一時的に)簡単な修正は次のファイルを置き換えることです:
libraries/src/Router/SiteRouter.php
joomlaからのもの3.8.3
ここにもプルリクエストがあります: https://github.com/joomla/joomla-cms/pull/19498