web-dev-qa-db-ja.com

システムのブロックキャッシュオプションが無効になっているにもかかわらず、一部のブロックキャッシュを強制する方法はありますか?

/admin/config/development/performance設定ページ、「コンテンツアクセス制限を定義するモジュールを有効にしたため、ブロックキャッシュが非アクティブになっている」ため、「キャッシュブロック」オプションが無効になっています。

ただし、一部のブロックをグローバルにキャッシュする必要があります(特に、キャッシュされていない場合、ページが読み込まれるたびにメニュー項目が再作成されるため、一部のsuperfishブロック)。

私はすでに Block Cache Alter モジュールを試しましたが、おそらくこのモジュールはシステムの「キャッシュブロック」オプションが有効になっている場合にのみ機能するためです(参照: https:// drupal。 org/node/1954224

ご協力ありがとうございます

5
MXT

最新のDrupal 7.33リリースでは、新しい設定変数が追加されました:

/**
 * Block caching:
 *
 * Block caching may not be compatible with node access modules depending on
 * how the original block cache policy is defined by the module that provides
 * the block. By default, Drupal therefore disables block caching when one or
 * more modules implement hook_node_grants(). If you consider block caching to
 * be safe on your site and want to bypass this restriction, uncomment the line
 * below.
 */

$conf['block_cache_bypass_node_grants'] = TRUE;

上記をTRUEに設定すると、「キャッシュブロック」オプションがチェック可能になります。

7
MXT

block_form_system_performance_settings_alter() は、そのコードが存在する場所です。調べてみると、variable_set('block_cache', TRUE);を1回実行するか、$conf['block_cache'] = TRUE;をsettings.phpファイルに追加することで、これを強制できます(下部にあります)。私はsettings.phpメソッドを選びます。

これのコアの問題: https://drupal.org/node/193096 (7.33になりました)。 MXTの使用方法については、MXTの回答を参照してください。

これを行うと、悪いことが起こる可能性があることに注意してください。あなたは警告されました。

3
mikeytown2