web-dev-qa-db-ja.com

ブロックキャッシュを無効または有効にできないのはなぜですか?

の中に admin/settings/performanceページ、私(管理者)はブロックキャッシュを有効または無効にできません。どうして?

7
enjoylife

その設定についてそのページで報告されているように:

コンテンツアクセス制限を定義するモジュールが有効になっている場合、ブロックキャッシュは非アクティブであることに注意してください。

hook_node_grants()を実装するモジュールがある場合、「ブロックキャッシュ」フォームフィールドは無効になります。

これは system_performance_settings() にあるコードで、「パフォーマンス」フォームのフォームビルダーです。

$form['block_cache']['block_cache'] = array(
  '#type' => 'radios', 
  '#title' => t('Block cache'), 
  '#default_value' => variable_get('block_cache', CACHE_DISABLED), 
  '#options' => array(
    CACHE_DISABLED => t('Disabled'),
    CACHE_NORMAL => t('Enabled (recommended)'),
  ), 
  '#disabled' => count(module_implements('node_grants')), 
  '#description' => t('Note that block caching is inactive when modules defining content access restrictions are enabled.'),
);

別の方法として、オプションを選択できないようにフォームフィールドを無効にするモジュールが存在する可能性があります。除外できないモジュールがあっても、それを効果的に実行しているモジュールがあったとしても、私はそれを行うモジュールを知りません。

6
kiamlaluno

私はあなたが「なぜ?」ではない)と尋ねたのを知っています「その問題を回避できますか」...しかし、hook_node_grants()を使用するモジュールを削除しなくても、この問題を回避できます。 Block Cache Alter module を試してください。特に、モジュールがhook_node_grants()を実装している場合でも、ブロックキャッシュを使用することができます。

7
Chaulky