Изменение настроек кэша программно в Drupal 7

Изменение настроек кэша программно в Drupal 7

10.08.2012 01:50:08 Просмотров 52 Источник

У меня есть блок, который отображает список RSS-каналов с внешнего сайта. Я хочу сохранить кэширование других блоков, кроме упомянутого блока. Как это сделать?

Например, у меня есть blockA, blockB и blockC . Я только хочу изменить настройки кэша блока постоянно на DRUPAL_NO_CACHEи оставить другие блоки, как они есть, и я хочу сделать это программно.

У вопроса есть решение - Посмотреть?

Ответы - Изменение настроек кэша программно в Drupal 7 / Change cache settings programmatically in Drupal 7

Jainendra

10.08.2012 01:55:22

Это уменьшит работу, перейдя на страницу настроек производительности (admin / settings/performance) и нажав кнопку" Очистить кэшированные данные", прокрутив вниз.

Но убедитесь, что эта страница доступна только администратору.

Для Drupal 7 это то же самое, что и Drupal 6:

<?php
  drupal_flush_all_caches();
  drupal_set_message('cache flushed.');
?>
https://stackoverflow.com/questions/11899194/change-cache-settings-programmatically-in-drupal-7/11899276#comment15838659_11899276
я прошу прощения за то, что был так непонятен
Является ответом!
Jurgo

10.08.2012 03:22:16

Вы можете изменить роли кэширования в конкретном модуле, который создает ваш блок. В блоке информации, как ниже:

function pref_block_info() {
  return array(
    'pref_main' => array(
      'info' => t('Display flash game for auth. users'),
      'cache' => DRUPAL_NO_CACHE,
    ),
    'pref_winner' => array(
      'info' => t('Show the winner of the last week.'),
      'cache' => DRUPAL_NO_CACHE,
    ),
    'pref_leader' => array(
      'info' => t('Show the leader of the current week.'),
      'cache' => DRUPAL_NO_CACHE,
    ),
    'pref_top' => array(
      'info' => t('Show the top 10 of the current week.'),
      'cache' => DRUPAL_NO_CACHE,
    ),
  );
}
David Fells

10.08.2012 11:38:14

Откуда берутся блоки? Это очень важно. Как сказал Юрго, вы можете указать его в hook_block_infoесли это пользовательский модуль. Если они являются блоками представлений, существует параметр кэширования для каждого отображения в представлениях, который обрабатывает это. Если они являются блоками, предоставленными каким-либо другим модулем, вам нужно будет напрямую запросить базу данных, чтобы изменить настройку кэширования блока.

В качестве общего замечания, чтобы отобразить RSS-каналы, просто используйте каналы и представления. Тогда вы вообще не пишете пользовательский код для всего этого.

Gokul N K

16.10.2012 05:34:55

Ответ, данный Jurgo, совершенно прав, если вы определяете блок в своем собственном модуле.

В случае, если вы хотите изменить поведение кэширования блока, написанного каким-либо другим модулем, вы можете использовать функцию mymodule_block_list_alter

function mymodule_block_list_alter(&$blocks, $theme, $code_blocks) {
  // Remove the caching on rss feeds block. 
  // Here rss-feeds is the unique key for the block
  $blocks['rss-feeds']['cache'] = DRUPAL_NO_CACHE;
}
Закрыть X