web-dev-qa-db-ja.com

ノードが削除されたときにURLエイリアスを削除する方法

Pathautoを使用しています。コンテンツの一部を削除したとき、そのURLエイリアスがまだ存在しないコンテンツ(node/xxx)にマッピングされていることに驚いた。

どうすればこのエイリアスとシステム名のマッピングを削除できますか自動的にノードが削除されたとき

編集:ノードが調整されたときにパスを変更したくないため、更新アクションを「何もしないでください。古いエイリアスはそのままにしてください」に設定しておきます。ただし、ノードが完全に削除された場合、パスを維持することは意味がありません。どういうわけか両方のオプションを持つことができますか?

5
digitgopher

あなたはhook_node_deleteを使うことができます:

function hook_node_delete($node){
    // Delete alias.
    $path = path_load(
      array('source' => 'node/'.$node->nid)
    );

    path_delete($path['pid']);
}
6
Robin

ここで、またはノードでエイリアスを更新できます

/ admin/config/search/path

または、ここ全体を一括更新します

/ admin/config/search/path/update_bulk

ここで設定したエイリアスパターンの変更に基づく

/ admin/config/search/path/patterns

エイリアスが削除されなかったように見えるのは、一種のチェーンで別のエイリアスに転送しているためだと思います。 Drupalは、コンテンツの削除時にalaiseをクリーンアップします。簡単なテストを実行して、それが発生することを確認できます。ただし、alaiseをチェーンしている場合、最終的なalaisを削除し、他を残すようです。 「更新アクション」を更新すると、作成される追加のalaiseの数を最小限に抑えることができます。

ここに移動して、「更新アクション」というセクションを見つけます/ admin/config/search/path/settings

アレが変更されたときに何をするかを3つの選択肢から選択

  • 何もしない。古いエイリアスはそのままにしておきます。
  • 新しいエイリアスを作成します。既存のエイリアスはそのままにしておきます。
  • 新しいエイリアスを作成します。古いエイリアスを削除します。

また、「エイリアスが変更されたときにリダイレクトを取得するためにRedirectモジュールをインストールすることを検討する」というアドバイスにも基づいています。

これがansがベースから外れていないことを願っていますが、50万項目のサイトで同様の問題に直面し、クリーンアップは深刻な問題でした。がんばって!

2
Greg Stout

パスエイリアスは、Admin> Configメニューのadmin/config/search/path/update_bulkで更新できます。

0
StG