web-dev-qa-db-ja.com

Drupal 7でmenu_rebuild関数を呼び出すにはどうすればよいですか?

menu_rebuild() 関数を呼び出したいのですが、コードスニペットを正確にどこに貼り付けるかわかりません。

pdate.php ファイルがローカルインスタンスのどこにも見つかりません。

これを試してみたいのは、すべてのノードを削除しましたが、メニュー構造の下にまだ表示されているためです。

13
user12804

次の内容のファイルを作成し、Drupalルートディレクトリにドロップします。たとえば、menu-rebuild.php。実行 http://example.com/menu-rebuild.php

<?php
error_reporting(E_ALL);
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_rebuild();
5
Sithu

Drupal 7

Drushを使用している場合は、次のコマンドを実行できます。

drush eval 'menu_rebuild();'

動作しない場合は、次を参照してください: PHP致命的なエラー?

Drupal 6

drush php-eval 'drupal_rebuild_theme_registry()'

memcached

Memcachedを使用している場合は、再起動する必要があります。

Linuxの場合:/etc/init.d/memcached restart

OS X(Homebrewを使用している場合):brew services restart memcached

15
kenorb

データベーススキーマを開き、次のSQLクエリを使用して、menu_linksおよびmenu_routerテーブルのすべての内容を削除します。

DELETE FROM menu_links;
DELETE FROM menu_router;

次に http://example.com/update.php を実行します。これはmenu_rebuild()を呼び出し、これらのテーブルに「新しい」データを入力します。 「PHP Fatal Error:Out of memory」が私のメニューのいくつかを混乱させた後、それは私のために働きました。

ただし、手動で再構築する必要があるすべてのカスタムメニューが消去されることに注意してください。それを避けるために、menu_routerとmenu_linksから選択したレコードをいくつか削除して少し遊んでもよいですが、私にとってはうまくいきませんでした。

また、テーブルからコンテンツを削除する前に、データベースとサイトディレクトリをバックアップすることを忘れないでください。

11
Valk

いくつかの異なる方法:

  1. hook_update_N からmenu_rebuild()を呼び出します
  2. Drupal adminからメニュー設定フォームを編集して保存します。
  3. コマンドラインから、drushを使用:drush cc menu
3
David Thomas

別の方法は変数を設定することです:

variable_set('menu_rebuild_needed', TRUE);

これはmenu_rebuild();をトリガーします

2

admin/config/development/performanceに移動し、[すべてのキャッシュをクリア]ボタンをクリックすると、メニューが再構築され、テンプレート、ブロック、ページなどのキャッシュがクリアされます。

2
penten

SQLでの管理メニューの使用を修正するには、Valkが前述したように、管理管理メニューからすべてのカスタマイズを削除することに注意してください。実行後、キャッシュをクリアし、管理メニューをデフォルト設定に再構築します。

SQLクエリは次のとおりです。

DELETE FROM menu_links WHERE menu_name='management' 
0
user28323