Mam witrynę z wieloma blokami statycznymi, która działała w wersji 1.9.1.0, ale w wersji 1.9.2.0 bloki statyczne zaczynają wyświetlać się sporadycznie, ponieważ czasami pokazują nieprawidłowy blok, a nie poprawny. Czasami wyświetlają się zgodnie z życzeniem. Czy ktoś wie, jak rozwiązać ten problem, który może być związany z tym problemem ?
77
Odpowiedzi:
Miałem ten problem z EE 1.14.2 i wygląda na to, że ten sam problem pojawił się w CE 1.9.2. Udokumentowałem mój problem i rozwiązanie w tym pytaniu dotyczącym SE .
Zasadniczo z powodu dodania następującego kodu do konstruktora
Mage_Cms_Block_Block
:Bloki statyczne CMS są teraz buforowane. Problem wynika ze sposobu generowania informacji o kluczu pamięci podręcznej. Powoduje to
Mage_Core_Block_Abstract
zachowanie przy użyciu nazwy bloków w układzie. Jeśli blok nie został dodany z układem, np. Na stronie cms, ta nazwa nie istnieje. Może to spowodować, że statyczne bloki współużytkują ten sam klucz pamięci podręcznej i ulegną pomieszaniu w pamięci podręcznej.Moim rozwiązaniem było zastąpienie
Mage_Cms_Block_Block
klasy i ustawienie informacji o kluczu pamięci podręcznej na podstawie identyfikatora bloku i bieżącego sklepu.Oczywiście należy to dodać we własnym module z
config.xml
zastąpieniem pliku i bloku itp. Alternatywnie możesz skopiowaćMage_Cms_Block_Block
do lokalnej puli kodów i dodać tam klucz pamięci podręcznej.Możesz zobaczyć nowe linie dodane w 1.9.2 tutaj
źródło
Właśnie zaktualizowałem do wersji 1.9.2.0 i również tego doświadczam. Kategorie ustawione do wyświetlania bloków statycznych + Produkty losowo wyświetlają nieprawidłowy blok statyczny. Nie istniało to przed moją aktualizacją 1.9.2.0.
Tymczasowa poprawka Wyłącz blokowanie wyjściowej pamięci podręcznej HTML, a wyświetlane bloki są prawidłowe.
źródło
Tutaj idziemy z rozwiązaniem opartym na module lokalnym, ponieważ powyższe rozwiązanie nie zapewnia całych kroków. Musimy stworzyć moduł niestandardowy, ponieważ wszyscy wiecie, że Magento Boogieman cię dopadnie! jeśli zmień rdzeń :)
Konieczne będą następujące pliki:
app/etc/modules/Bhupendra_Cms.xml
app/code/local/Bhupendra/Cms/etc/config.xml
app/code/local/Bhupendra/Cms/Block/Block.php
app/code/local/Bhupendra/Cms/Block/Widget/Block.php
Aby uzyskać więcej informacji, możesz odwiedzić poniższy link, a także pobrać z niego https://www.milople.com/blogs/ecommerce/solved-magento-static-block-display-issue.html
źródło
Nie ma na to oficjalnej łatki, jednak została rozwiązana w CE 1.9.2.1
Uwaga: zgłoszono, że nadal występują problemy ze stronami CMS w wielu widokach sklepu:
Źródło: http://www.magentocommerce.com/products/bug-tracking/issue/index/id/870
źródło
Mogę również potwierdzić ten problem.
Powielać:
Za pomocą przycisku
CMS -> Widgets
utwórz widżet, aby dodać blok statyczny do lewego paska bocznego.Następnie utwórz drugi widget, aby dodać drugi blok statyczny (inny blok niż w
step 1
) do lewego paska bocznego.Jeśli bufor jest wyłączony, oba statyczne bloki są poprawnie wyświetlane na pasku bocznym.
Ale jeśli włączysz bufor, zobaczysz blok statyczny z
step 1
wyświetlanego dwukrotnie.źródło
Piotr z Magento opublikował na razie nieoficjalną łatkę do tego wydania: https://gist.github.com/piotrekkaminski/ecd245e8c9390e4020db
Wydaje się, że załatwi sprawę. Tak, edytuje rdzeń, ale rozwiązuje problem, dopóki Magento nie wyda oficjalnej łaty lub następnej wersji ...
źródło
Zaktualizuj Magento do 1.9.2.1
Zrobiłem to i włączyłem pamięć podręczną dla danych wyjściowych Blocks HTML i wydaje się, że jest to naprawione.
Jak również niektóre problemy bezpieczeństwa zostały rozwiązane w nowej wersji.
źródło
W najnowszej wersji Magento rozszerza ją o nowe funkcje bezpieczeństwa. możesz dodać uprawnienia w systemie-> uprawnienia do bloku statycznego.
źródło
Miałem ten sam problem z moim sklepem. Najlepszym obejściem, jakie do tej pory odkryłem, jest wyłączenie buforowania dotkniętych bloków. Możesz to zrobić, ustawiając czas życia pamięci podręcznej bloków na null.
Globalne wyłączenie pamięci podręcznej „Blokuje wyjście HTML” w aktywnej witrynie nie jest dobrym pomysłem, ponieważ niepotrzebnie wpływa na wydajność witryny.
Wyłączanie pamięci podręcznej dla jednego bloku w xml:
Wyłączanie pamięci podręcznej dla jednego bloku w php:
Nie ustawiaj czasu życia pamięci podręcznej na „0”, jak wskazano w tym artykule
źródło
$block->setCacheLifeTime("null");
UwagaNULL
i „null” to dwie różne rzeczy (później jedna jest ciągiem) i dlatego oczekiwany wynik nie zostanie uzyskany.Udało mi się rozwiązać ten problem, aktualizując istniejące rozszerzenia w Magento Connection Manager. Po przyjrzeniu się temu miałem wrażenie, że problem istnieje w systemie buforowania Magento.
Domyślnie Magento ma kilka pakietów związanych z technologiami buforowania. Obejmują one adaptery i biblioteki dla Zend i Redis.
Zamiast próbować znaleźć odpowiedni pakiet, zdecydowałem się zaktualizować wszystkie pakiety w mojej instalacji.
Następnie wybrałem znacznik wyboru: Mage_All_Latest Który jest metapakietem dla najnowszej stabilnej wersji Magento 1.9.0.0.
Problem może być rozwiązany poprzez aktualizację tylko odpowiednich pakietów. Czułem, że to była lepsza droga, ponieważ podejrzewam, że ta metoda stosuje również poprawki bezpieczeństwa.
źródło
Będziesz musiał wykonać pełną aktualizację lub backport 1.9.2.0
Zmiany pamięci podręcznej bloków i widżetów CMS w 1.9.2.1
magento-1921 / app / code / core / Mage / Cms / Block / Block.php
magento-1921 / app / code / core / Mage / Cms / Block / Widget / Block.php
źródło
Korzystam z Magento 1.9.3.8 i problem nadal występuje.
Możesz znaleźć moją poprawkę tutaj :
Zasadniczo dodam unikalny ciąg znaków na podstawie adresu URL strony i blockId do informacji o każdym kluczu pamięci podręcznej, więc każdy blok będzie miał unikalny klucz:
Dopóki Magento nie przygotuje poprawki dla tego problemu, możesz utworzyć plik:
i wstaw kod z powyższego adresu URL github jako treść.
Ten kod jest testowany dla Magento 1.9.2. * I 1.9.3. *
źródło
Jest to potwierdzony błąd w wersji 1.9.2, na razie możesz rozwiązać ten problem, po prostu wyłączając pamięć podręczną „Blokuje wyjście HTML” z poziomu admin -> sekcja zarządzania pamięcią podręczną
Mam nadzieję, że to pomoże
źródło