web-dev-qa-db-ja.com

管理者だけがブロックを見ることができるのはなぜですか?

Paragraphs および Block field モジュールを使用して、ページのコンテンツ内のノードのリストを表示しています。これはオーサリング時にうまく機能しますが、管理者アカウントからログアウトするとすぐに、ノードリストがページから消えます。コンポーネントはまだそこにありますが、コンテンツはレンダリングされません。

これがtwig私のブロック段落タイプのテンプレートです:

_{%
set classes = [
'paragraph',
'paragraph--type--' ~ paragraph.bundle|clean_class,
view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class,
'paragraph--id--' ~ paragraph.id.value,
]
%}

<div{{ attributes.addClass(classes) }}>
  {{ content }}
</div>
_

ご覧のとおり、それほど多くは進んでいません。

誰もがブロックフィールドモジュールの経験を持っていますか?

編集:

ブロックフィールドモジュールのソースを掘り下げて調べたところ、 this がエラーの原因となっているコード行であることがわかりました。

_if (!$block_instance || !$block_instance->access(\Drupal::currentUser())) {
_

具体的には、2番目の条件です。そのため、何らかの理由で、現在のユーザーが管理者でない限り、現在のユーザーはブロックインスタンスにアクセスできません。誰かがこれを解決する方法を知っていますか?

編集2:私はおそらく、私が表示しようとしているブロックがビューによって作成されていることを言及する必要があります。生成されたブロックのaccessプロパティがすべてのユーザーロールを許可することを再確認しました。

編集3:もう少し掘り下げて、_Drupal\views\Plugin\Block\ViewsBlockBase::blockAccess_からAccessResult::allowed()を返すと問題が解決することを確認しました。つまり、ビューは何らかの理由でブロックIDにアクセスできないと言っています。

編集4:すべてのユーザーに「コンテンツアクセス制御のバイパス」権限を設定すると問題が解決することを発見しました。ただし、これが望ましいかどうかはわかりません。これを設定せずに問題を修正する方法はありますか?

1
Brian Gradin

フェイスパーム

わかりました、私は理想的な解決策を見つけました。/admin/contentで作成したノードを見ると、それらすべてがStatus:Publishedとしてリストされていました。しかし、それらすべてを選択し、アクションドロップダウンから[コンテンツの公開]を選択し、[選択したアイテムに適用]をクリックすると、突然すべてがビューブロックフィールドに表示されました。

私の推測では、データベース内の何かを更新する必要がありました。少しバグのようですが、これはDrupalまたはblock_fieldモジュールのいずれかによって自動的に処理されたはずです。

とにかく、今修正しました。

3
Brian Gradin

私にも同様の問題がありました。解決策は、匿名ユーザーに段落コンテンツを表示するためのアクセス許可を付与することです。

Paragraphs Type Permissions-> Some Para Test:View content匿名ユーザーに許可を与えることで問題が解決します。

0
miststudent2011