Drupal 8'in yeni bir menü sistemi var, artık yok hook_menu
ve hook_menu_alter
yok.
Mevcut bir rotayı değiştirmek isterseniz, Drupal 7'ye kıyasla biraz daha karmaşıktır.
Senin modülde bir sınıf dosyası oluşturmak zorunda YOURMODULE/src/Routing/CLASSNAME.php
olduğunu uzanır 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...
}
}
Sen alabilir RouteSubsciber örnek olarak düğüm modülünün sınıfını.
RouteSubscriber'ınızın tanınmasına izin vermek için ayrıca YOURMODULE.services.yml
modül dizininizin kökünde bir dosya oluşturmanız gerekir:
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
Yeni menü sistemi hakkında daha iyi bir fikir edinmek için aşağıdaki makaleleri tavsiye ederim:
Düzenleme: Berdir tarafından belirtildiği
gibi , menü sistemi artık D7'nin menü sistemi ile ilgisi olmayan farklı bir yapıya sahip, bu yüzden artık bir menü türü diye bir şey yok.