web-dev-qa-db-ja.com

JRoute :: _( 'index.php')は、Joomla 3.8.4以降、Itemidを追加しなくなりました

イベントのリストを含むページを生成するカスタムコンポーネントと、イベントの詳細を提供するページがあります。以前は、リストページを処理するためのメニュー項目を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のすべての単一インスタンスを編集する以外にこれを修正する方法はありますか?

2
Chaosxmk

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

1
Lodder