Проверьте, вошел ли клиент в систему (проблемы с кэшем)
У меня есть страница CMS, которая показывает информацию только тогда, когда клиент вошел в систему. На этой странице я загружаю блок CMS с этим кодом:
{{block type="core/template" template="class_management/source.phtml"}}
В начале файла phtml, чтобы проверить, вошел ли клиент в систему или нет, я использую следующее:
if(Mage::getSingleton('customer/session')->isLoggedIn()){
//display content
}
Проблема в том, что если клиент загрузит эту страницу, не войдя в систему, на странице не будет отображаться содержимое. Если клиент войдет в систему и вернется на страницу, она все равно не будет отображать содержимое, пока я не обновлю кэш.
Можно ли как-нибудь это исправить?
Я использую Magento 1.9.2.4, и на моем сервере включен кэш redis.
Спасибо вам!
2 answers
Вам необходимо установить время жизни кэша равным 0 для вашего пользовательского блока в xml-файле макета.
Внутри вашей темы, в local.xml файл, внутри узла добавьте код выше:
<block type="core/template" name="class_management_source" template="class_management/source.phtml">
<action method="setCacheLifetime"><lifetime>1</lifetime></action>
</block>
В вашем блоке CMS вам нужно заменить вызов блока на:
{{block type="core/template" name="class_management_source" template="class_management/source.phtml"}}
Не забудьте очистить кэш Magento: Система > Кэш Magento > Очистить кэш Magento
Я не уверен, но вы можете попробовать следующий код, сначала очистите кэш и проверьте все
{{block type="core/template" template="class_management/source.phtml" block_id="my-block" cache_lifetime=0 cache_tags="CACHE_TAG_MY_BLOCK" cache_key="my-block"}}