web-dev-qa-db-fra.com

Pourquoi ne puis-je pas désactiver ou activer le cache de blocs?

Dans le admin/settings/performance page, je (l'administrateur) ne peux pas activer ou désactiver le cache de blocs. Pourquoi?

7
enjoylife

Comme indiqué dans cette page pour ce paramètre:

Notez que la mise en cache des blocs est inactive lorsque les modules définissant les restrictions d'accès au contenu sont activés.

S'il existe des modules implémentant hook_node_grants(), le champ de formulaire "Cache cache" est désactivé.

C'est le code présent dans system_performance_settings () , qui est le générateur de formulaire pour le formulaire "Performance":

$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.'),
);

Comme alternative, il pourrait y avoir un module qui désactive le champ du formulaire pour éviter que l'option ne puisse être sélectionnée; Je ne connais aucun module qui fasse cela, même si je ne peux pas exclure qu'il y ait un module qui le fait efficacement.

6
kiamlaluno

Je sais que vous avez demandé "pourquoi?" pas "puis-je contourner ce problème" ... mais vous pouvez contourner ce problème sans supprimer les modules qui utilisent hook_node_grants(). Essayez le module Block Cache Alter . Il permet, entre autres, la possibilité d'utiliser la mise en cache des blocs même si les modules implémentent hook_node_grants().

7
Chaulky