Проверьте, вошел ли клиент в систему (проблемы с кэшем)


У меня есть страница 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.

Спасибо вам!

Author: Bruno Monteiro, 2017-02-13

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

 2
Author: Jonathan Ribas, 2017-02-14 22:58:40

Я не уверен, но вы можете попробовать следующий код, сначала очистите кэш и проверьте все

{{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"}}
 0
Author: Murtuza Zabuawala, 2017-02-14 06:08:48