menu_rebuild()関数を呼び出したいのですが、コードスニペットを正確に貼り付ける場所がわかりません。
ローカルインスタンスのどこにもupdate.phpファイルが見つかりません。
これを試してみたい理由は、すべてのノードを削除したからですが、それらはまだメニュー構造の下に表示されています。
/var/www/htdocs/drupal
それを変更することは悪い考えです。menu_rebuildを呼び出す理由に関する詳細を追加してください。
menu_rebuild()関数を呼び出したいのですが、コードスニペットを正確に貼り付ける場所がわかりません。
ローカルインスタンスのどこにもupdate.phpファイルが見つかりません。
これを試してみたい理由は、すべてのノードを削除したからですが、それらはまだメニュー構造の下に表示されています。
/var/www/htdocs/drupal
それを変更することは悪い考えです。menu_rebuildを呼び出す理由に関する詳細を追加してください。
回答:
次の内容のファイルを作成し、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();
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
データベーススキーマを開き、次のSQLクエリを使用して、menu_linksおよびmenu_routerテーブルのすべてのコンテンツを削除します。
DELETE FROM menu_links;
DELETE FROM menu_router;
次に、http://example.com/update.phpを実行します。menu_rebuild()を呼び出し、これらのテーブルに「新鮮な」データを取り込みます。「PHPの致命的なエラー:メモリ不足」が私のメニューのいくつかを混乱に変えた後、私にとってはうまくいきました。
ただし、手動で再構築する必要があるカスタムメニューがすべて消去されることに注意してください。それを避けるために、menu_routerとmenu_linksから選択したレコードを削除することで少し遊ぶかもしれませんが、私にとってはうまくいきませんでした。
また、テーブルからコンテンツを削除する前に、データベースとサイトディレクトリをバックアップすることを忘れないでください。
いくつかの異なる方法:
menu_rebuild()
からhook_update_Ndrush cc menu
menu_cache_clear_all()
メニューキャッシュの再構築を呼び出すこともできます
別の方法は変数を設定することです:
variable_set('menu_rebuild_needed', TRUE);
これにより、 menu_rebuild();
SQLの管理メニューの使用を修正するには、Valkが上記のように管理管理メニューからすべてのカスタマイズを削除することに注意してください。キャッシュをクリアすると、管理メニューがデフォルト設定に再構築されます。
SQLクエリは次のとおりです。
DELETE FROM menu_links WHERE menu_name='management'