Drupal 8には新しいメニューシステムがhook_menu
あり、hook_menu_alter
もうありません。
既存のルートを変更したい場合、Drupal 7に比べて少し複雑です。
あなたのモジュールで、あなたはYOURMODULE/src/Routing/CLASSNAME.php
その拡張でクラスファイルを作成する必要がありますRouteSubscriberBase
:
/**
* @file
* Contains \Drupal\YOURMODULE\Routing\RouteSubscriber.
*/
namespace Drupal\YOURMODULE\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
/**
* Listens to the dynamic route events.
*/
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
// Get the route you want to alter
$route = $collection->get('system.admin_content');
// alter the route...
}
}
ノードモジュールのRouteSubsciberクラスを例に取ることができます。
RouteSubscriberを認識させるにYOURMODULE.services.yml
は、モジュールディレクトリのルートにファイルを作成する必要もあります。
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
新しいメニューシステムをよりよく理解するには、次の記事をお勧めします。
編集:
としてBerdirで述べた、メニューシステムは、D7のメニューシステムとは何の関係も持たない、今異なる構造を有しているので、もはや、メニューの種類のようなものはありません。