2010-05-07 11 views
6

Używam pamięci podręcznej bloku Magento dla górnego bloku nawigacji. Problem polega na tym, że blok musi generować adresy URL plików w katalogu ze skórą, których nie można umieścić w plikach css, ponieważ nazwy plików zależą od danych modelu kategorii.Jak używać oddzielnych bloków pamięci podręcznej do bezpiecznego i niezabezpieczonego dostępu do sklepu w Magento?

Teraz po uruchomieniu programu magento przy użyciu bezpiecznego połączenia (https: //) blok nawigacyjny jest pobierany z pamięci podręcznej i wysyłany do przeglądarki, ale z adresami URL http: //, które powodują ostrzeżenie w większości przeglądarek na temat niezabezpieczenia elementy na stronie.

Chciałbym mieć oddzielne pamięci podręczne dla bezpiecznych i niezabezpieczonych połączeń. Blok nawigacji rozszerza klasę Mage_Catalog_Block_Navigation i dlatego ma następującą konfigurację cache:

$this->addData(array(
     'cache_lifetime' => false, 
     'cache_tags'  => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG), 
    )); 

Odpowiedz

4

Hmmm prostsze niż myślałem ...

Próbowałem przesłanianie metody getCacheKey() dołączając flagę z aktualnego stanu bezpieczeństwa, lecz na początku nie był to sukces, ale po kilku czystkach cache to wydaje się działać teraz:

public function getCacheKey() 
{ 
    $key = parent::getCacheKey(); 
    $key .= Mage::app()->getStore()->isCurrentlySecure() ? '_S' : '_U'; 

    return $key; 
} 
+0

jest przykładem tego w Mage_Page_Block_Html_Footer rdzeniowego w v1.3.2.4 także: '/ ** * odzyskać klucz do zawartości bloku buforowanie * * @return ciąg */ publiczna funkcja getCacheKey() { zwrot 'PAGE_FOOTER_'. Mage :: app() -> getStore() -> getId() . "_". (int) Mage :: app() -> getStore() -> isCurrentlySecure() . "_". Mage :: getDesign() -> getPackageName() . "_". Mage :: getDesign() -> getTheme ("szablon"); } ' – benz001

Powiązane problemy