最近サイトを移行しましたが、一部のノードがコンテンツリストに表示されませんが、作成したビューには表示されます。ただし、それらがクリックされると(example.com/node/123)、見つからないページが返されます。
ノードはデータベース内にあり、ノードテーブルとnode_revisionsの両方、および関連するCCKテーブルにあります。
何が原因の可能性がありますか?
私はこの問題を抱えていました、それは特定のノードにのみ影響しました。 dbで調査したとき、すべての値はノードとノードリビジョンのテーブル間で対応していたため、最初はこれらのテーブルの値とは関係がないと想定しました。 url_aliasテーブルを確認しましたが、サイトも多言語に対応しているため、カスタムコンテンツタイプの多言語パスの自動値とすべての変数テーブルの不一致について変数テーブルを確認しました。メニュールーターを再構築しても効果はありませんでした。ここで提案されているように、すべてのノードアクセス許可をリセットしてみました。正直言って、私はアイデアがほとんどなかったので、ありがたいことにこの投稿に出くわしました:D問題は、私が書いたカスタムモジュールからノードコンテンツをインポートしてxmlからノードを取り込む(うまく機能した)ところからでしたが、インポート以降インポートを行っていたユーザーアカウントを削除しました。つまり、インポートされたすべての多言語ノードが引き続きリンクされ、存在しないユーザーアカウントのuidになりました。 phpmyadminの簡単なSQLクエリで、すべてのノードを管理者(uid:1)が所有するように設定
UPDATEノードセットuid = 1; UPDATE node_revisions set uid = 1;
これにより、当惑する問題が修正されました。ユーザーアカウントが削除された場合Drupalオプションでそのユーザーに属するすべてのノードをチェックし、それらをuidに更新するようにパッチを提案します:1削除されたユーザーアカウントによって追加されたノードに突然アクセスできなくなりますuid 1(admin)を含むサイトの残りの部分に影響を与えます。賢明な並べ替えでは、uid 1が無効、有効、無効に関係なく、サイト上のすべてのノードコンテンツへの表示/編集アクセス権を常に持っていると当然想定しているため、これは不満でした。いくつかのmugwumpによって追加されました。
ほとんどの場合、これは権限と競合するため、admin/content/node-settings/rebuild
に移動して権限を再構築します。
これは、一部のアクセスモジュールをテストし、それらが正しくアンインストールされていない場合に発生します。また、ビューが常に同じ権限を使用するとは限らないため、node/123
ではなく、ビューではノードを表示できます。
また、アクセスモジュールがインストールされておらず、再構築が機能しない場合は、データベースを調べて、次のクエリを実行します。
TRUNCATE TABLE node_access;
INSERT INTO node_access VALUES (0, 0, 'all', 1, 0, 0);
これもそれを修正する必要があります。
Devel をインストールして、ノードに同梱されているDevel Node Access moduleを使用して問題を分析することができます。
ノードの作成に使用されたアカウントに関する情報がデータベースに含まれていない可能性があります。
あなたがする必要があるのはwww.yourdomain.tld/admin/structure/pagesに行き、これらがすべて無効になっていることを確認し、Drupalである重要なシステムファイルを削除していない限り、問題を解決する必要があります=その場合はDrupalのディストリビューションを再ダウンロードしてからホストにアップロードしてファイルを抽出し、それらを現在のファイルを上書きするために移動します。