Como desabilitar/reduzir o tempo de cache de um bloco de notificação?
-
13-12-2019 - |
Pergunta
Criei um módulo há alguns minutos para extrair informações de um feed RSS e exibi-las na caixa de entrada de notificação do painel de administração e na barra de ferramentas logo abaixo do menu de administração.
Isso funciona perfeitamente, mas infelizmente não carrega novas mensagens quando atualizo.Eu tenho que liberar o cache do magento e depois atualizar para carregar as novas mensagens.
Gostaria de desabilitar o cache do módulo/bloco de notificações, para que todas as novas mensagens possam ser carregadas sempre que a página for carregada.
cansei esta linha de código, mas não pareceu funcionar:
<reference name="notification_toolbar">
<action method="setCacheLifetime"><s>0</s></action>
</reference>
Não esperava que funcionasse, pois não é quem gera a informação, apenas a exibe.
Alguém pode me aconselhar sobre como desabilitar o cache deste módulo/bloco.
obrigado.
Solução
Eu descobri sozinho!
depois de examinar alguns códigos, percebi que ele tem um temporizador de frequência de atualização, então procurei na seção de sistema do painel de administração e encontrei um seletor de frequência de atualização em configuração => sistema => notificação.Infelizmente o menos tempo que teve foi 1 hora.
Examinei as pastas do mago e encontrei o seguinte que fornece os horários.
Mage/Adminhtml/Model/System/Config/Source/Notification/Frequency.php
class Mage_Adminhtml_Model_System_Config_Source_Notification_Frequency
{
public function toOptionArray()
{
return array(
1 => Mage::helper('adminhtml')->__('1 Hour'),
2 => Mage::helper('adminhtml')->__('2 Hours'),
6 => Mage::helper('adminhtml')->__('6 Hours'),
12 => Mage::helper('adminhtml')->__('12 Hours'),
24 => Mage::helper('adminhtml')->__('24 Hours')
);
}
}
Em seguida, adicionei o código a seguir e executei alguns testes, que funcionaram!
0 => Mage::helper('adminhtml')->__('0 Minute'),
Não tenho certeza se fiz isso corretamente, mas faz exatamente o que preciso.em seguida, substituo isso pelo meu módulo para concluí-lo.
Espero que ajude outras pessoas!
Outras dicas
por que você quer que isso seja atualizado tão comum, não iria encher sua caixa de entrada?
Pode haver 2 opções para você: você pode escrever um observador de eventos que limpe esse cache.admin_notifications_lastcheck é a tag de cache que encontrei sobre as notificações.
A outra opção é tornar o tempo de vida do cache realmente curto, reescrevendo a função setLastUpdate em core/AdminNotification/model/feed.php. Você pode atribuir a esta função um parâmetro com um tempo de vida do cache.
Não tentei e estou com pressa, mas como não há respostas achei que deveria compartilhar.Posso adicionar mais informações amanhã se você precisar.