Eu tenho um site com vários blocos estáticos que estavam funcionando no 1.9.1.0, mas com o 1.9.2.0 os blocos estáticos começam a ser exibidos esporadicamente, pois às vezes mostram o bloco errado e não o bloco correto. Às vezes, eles são exibidos como desejado. Alguém sabe como resolver esse problema que pode estar relacionado a esse problema ?
77
Respostas:
Eu tive esse problema com o EE 1.14.2 e parece que o mesmo problema surgiu no CE 1.9.2. Eu documentei meu problema e solução nesta questão SE .
Basicamente, devido ao seguinte código ser adicionado ao construtor de
Mage_Cms_Block_Block
:Blocos estáticos do CMS agora são armazenados em cache. O problema surge de como as informações da chave do cache são geradas. Ele volta ao
Mage_Core_Block_Abstract
comportamento de usar o nome dos blocos no layout. Se o bloco não foi adicionado ao layout, por exemplo, em uma página cms, esse nome não existe. Isso pode resultar em blocos estáticos que compartilham a mesma chave de cache e se misturam no cache.Minha solução foi substituir a
Mage_Cms_Block_Block
classe e definir as informações da chave de cache com base na identificação do bloco e no armazenamento atual.Obviamente, isso precisaria ser adicionado em seu próprio módulo com uma
config.xml
substituição de arquivo e bloco etc. Como alternativa, você pode copiarMage_Cms_Block_Block
para o conjunto de códigos local e adicionar a chave de cache lá.Você pode ver as novas linhas adicionadas no 1.9.2 aqui
fonte
Acabei de atualizar para 1.9.2.0 e também estou enfrentando isso. As categorias definidas para exibir blocos estáticos + produtos exibem aleatoriamente o bloco estático errado. Isso não existia antes da minha atualização 1.9.2.0.
Correção temporária Desative o cache de saída HTML dos blocos e os blocos exibidos estão corretamente.
fonte
Aqui vamos nós com a solução baseada em módulo local, pois a solução acima não fornece etapas inteiras. Precisamos criar o módulo Customizado, porque todos sabem que o Magento Boogieman vai buscá-lo! se mudar o núcleo :)
Você precisará dos seguintes arquivos:
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
Para obter mais informações, visite o link a seguir e faça o download dele https://www.milople.com/blogs/ecommerce/solved-magento-static-block-display-issue.html
fonte
Não há um patch oficial para isso, no entanto, ele foi resolvido no CE 1.9.2.1
Nota: Foi relatado que ainda existem problemas com as páginas do CMS em várias visualizações da loja:
Fonte: http://www.magentocommerce.com/products/bug-tracking/issue/index/id/870
fonte
Também posso confirmar este problema.
Reproduzir:
Usando o
CMS -> Widgets
, crie um widget para adicionar um bloco estático à barra lateral esquerda.Em seguida, crie o segundo widget para adicionar o segundo bloco estático (bloco diferente do que está dentro
step 1
) à barra lateral esquerda.Se o cache estiver desativado, os dois blocos estáticos serão exibidos corretamente na barra lateral.
Mas se você habilitar o cache, verá o bloco estático sendo
step 1
exibido duas vezes.fonte
Por enquanto, o Piotr do Magento publicou um patch não oficial para esta edição: https://gist.github.com/piotrekkaminski/ecd245e8c9390e4020db
Parece fazer o truque. Sim, está editando o núcleo, mas corrige o problema até o Magento lançar o patch oficial ou a próxima versão ...
fonte
Atualize o Magento para 1.9.2.1
Eu fiz isso e habilitei o cache para a saída HTML dos blocos e parece estar corrigido.
Assim como alguns problemas de segurança são abordados em uma nova versão.
fonte
Na versão mais recente do Magento, aprimora-o com novos recursos de segurança. você pode adicionar permissões no sistema-> permissões ao bloco estático.
fonte
Eu tive o mesmo problema com minha loja. A melhor solução que descobri até agora é desativar o cache dos blocos afetados. Você pode fazer isso definindo o tempo de vida do cache dos blocos como nulo.
Desabilitar globalmente o cache "Blocks HTML output" em um site ativo não é uma boa ideia, pois afeta desnecessariamente o desempenho do site.
Desabilitando o cache para um bloco no xml:
Desabilitando o cache para um bloco no php:
Não defina o tempo de vida do cache como "0", conforme indicado neste artigo
fonte
$block->setCacheLifeTime("null");
NotaNULL
e "null" são duas coisas diferentes (depois uma é uma string) e, portanto, o resultado esperado não será obtido.Consegui corrigir esse problema atualizando as extensões existentes no Magento Connection Manager. Depois de analisar, fiquei com a impressão de que o problema existe no sistema de cache do Magento.
Por padrão, o Magento possui vários pacotes relacionados às suas tecnologias de cache. Eles incluem adaptadores e bibliotecas para Zend e Redis.
Em vez de tentar encontrar o pacote apropriado, optei por atualizar todos os pacotes na minha instalação.
Então eu escolhi a marca de seleção em: Mage_All_Latest Qual é um metapacote para a versão estável mais recente do Magento 1.9.0.0.
Pode ser possível corrigir o problema atualizando apenas os pacotes corretos. Eu senti que esse era o melhor caminho a seguir, porque estou sob suspeita de que esse método também aplique patches de segurança.
fonte
Você precisará fazer uma atualização completa ou o backport 1.9.2.0
Alterações de cache do CMS Block e Widget no 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
fonte
Estou usando o Magento 1.9.3.8 e o problema ainda existe.
Você pode encontrar minha correção aqui :
Basicamente, estou adicionando uma string exclusiva com base na URL da página e blockId a cada informação da chave do cache, para que cada bloco tenha uma chave exclusiva:
Até o Magento preparar uma correção para esse problema, você pode criar o arquivo:
e insira o código do URL do github acima como conteúdo.
Este código foi testado para Magento 1.9.2. * E 1.9.3. *
fonte
Este erro foi confirmado na versão 1.9.2. Por enquanto, você pode resolver esse problema desativando o cache "Blocks HTML output" na seção admin -> cache management
Espero que ajude
fonte