Ao criar uma adição a uma loja virtual Magento, me deparei com alguns problemas. Na minha busca por criar um código o mais rápido possível, me vi incapaz de descobrir duas coisas.
Meu código (relevante) é o seguinte:
$rc = Mage::getResourceSingleton('catalog/product');
$productName = $rc->getAttributeRawValue($productId, 'name', Mage::app()->getStore());
$productPrice = $rc->getAttributeRawValue($productId, 'price', Mage::app()->getStore());
$productImage = $rc->getAttributeRawValue($productId, 'image', Mage::app()->getStore());
$productUrl = $rc->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
As duas coisas que não consigo entender são:
1) Como recupero o URL do produto? url_key
nem sempre fornece o URL correto, pois nem todos os webshops usam URLs canônicos ou a categoria no URL.
2) Como posso obter a imagem do produto com uma largura / altura definidas, em vez da imagem completa? A ->resize()
função não funciona neste caso, eu recon (porque retorna uma URL). Adicionado a isso, é possível obter o Base Image
, Small Image
e Thumbnail
separadamente?
Meu principal objetivo é manter o código o mais rápido possível. Eu só tenho uma identificação de produto, já que percorro os filhos de um produto. Não desejo usar, ->load()
pois isso leva muito mais tempo para carregar.
fonte
small_image
. Parece que todas as imagens pequenas são redimensionadas e não seleciona a variante redimensionada. Alguma idéia de como resolver isso? E você também tem uma solução para o URL do produto?fonte
Experimente o código mencionado abaixo para obter o URL da imagem:
OU
OU
fonte
Você não pode prescindir da variável $ products / $ product:
Para o URL do produto:
// você não pode parar esse método de adicionar ___store ao URL, mesmo configurando _store_to_url como false
** // você não pode parar esse método de adicionar ___store à URL, mesmo configurando _store_to_url como false // observação - consulte a seção "using _ignore_category" abaixo para obter um bug discutível ao usar esse parâmetro **
Para imagem do produto:
Se você deseja que o URL da imagem seja usado na tag,
fonte
$product->getUrlPath();
, obtendo ourl_key
. Então isso é possível sem a$product
variável Isso me faz acreditar que também é possível obter a imagem do produto e redimensioná-la, sem carregar o produto inteiro. (de modo a não utilização deMage::getModel('catalog/product')->load($productId);
)Quero adicionar 1 linha de código ao comentário do mpaepper, que eu acho que é uma ótima solução em cenários específicos. Usei-o em um loop em uma página onde não tinha um objeto de produto para carregar a imagem através do modelo de produto.
Quando você não deseja carregar uma imagem com um objeto de produto, pode usar a abordagem mpaepper exlpains. Não se esqueça de salvar a imagem criada manualmente ao usar esta solução. Quando você salva o objeto de imagem, ele cria um arquivo de cache, como as imagens normais do Magento também.
Portanto, o código completo deve ser:
fonte
A imagem do produto pode ser acessada da seguinte maneira:
Para redimensionar a imagem, você pode adicionar este:
Para obter o URL do produto:
Aqui $ _products é o próprio produto e não o ID do produto;
fonte
$_products
variável, pois isso exigiria que eu carregasse o produto na sua totalidade. E carregar todos os produtos pelos quais estou circulando criaria tempos de carregamento de segundos, o que é demais.