Olá, pessoal! Tudo bem? Vamos dar continuidade na sequência de artigos sobre cache (veja o artigo anterior). Hoje abordaremos a utilização de algumas das funções da API de cache do Drupal.
No exemplo de hoje iremos cachear uma lista de termos. Agora, mãos ao código!
/** * Implements hook_menu(). */ function custom_menu() { $items['content-cache'] = array( 'title' => t('Content Cache'), 'page callback' => 'custom_cache', 'access arguments' => array('access content'), 'type' => MENU_NORMAL_ITEM, ); return $items; }
No código acima criamos uma pagina para aparecer a lista. No índice ‘page callback’ é informado o nome da função que irá retorna a lista.
/** * Callback menu for content cache. */ function custom_cache() { $data = &drupal_static(__FUNCTION__); if (!isset($data)) { if ($cache = cache_get('custom_cache')) { $data = $cache->data; } else { // Load vocabulary by machine name tags. $vocabulary = taxonomy_vocabulary_machine_name_load('tags'); // Load the terms of taxonomy Tags. $vocabulary = taxonomy_get_tree($vocabulary->vid); foreach ($vocabulary as $key => $term) { $data[] = array( 'data' => $term->name, 'class' => array('item'), ); } cache_set('custom_cache', $data, 'cache'); } } return theme('item_list',array( 'items' => $data, 'title' => '', 'type' => 'ul', 'attributes' => array('class' => array('list-tags', 'item-list')) )); }
Acima é definida a função responsável por criar a lista com os itens vindos do cache ou não. Utilizamos a função drupal_static() e passamos por parâmetro __FUNCTION__, uma constante do PHP, que representa o próprio nome da função. Com isso, o Drupal armazena o nome da função onde drupal_static(__FUNCTION__) é chamada.
Em seguida, é feita uma verificação se a função cache_get() consegue recuperar o cache da chave “custom_cache”. Se o cache for encontrado, ele é retornado um objeto com o conteúdo na propriedade data. Caso não seja encontrado iremos pegar as informações da lista do próprio banco de dados. E com a função cache_set() inserimos as informações no cache.
Por último, a função retorna uma lista com as informações.
Vamos ver o resultado. Acessem a url “seusite.com/content-cache”.
Para conseguir os mesmos itens da listagem acima é necessário inseri-los no vocabulário de Tags.
Agora vamos recapitular:
Criamos uma pagina com o hook_menu. Depois definimos uma função callback, a qual é responsável por retornar as informações vindas do cache (se existir) ou carrega as informações e depois insere no cache. Simples assim!
Vou finalizar por aqui e qualquer dúvida, sugestão ou crítica é só deixar um comentário. Até o próximo artigo.