Lors de la création d'un ajout à une boutique en ligne Magento, je suis tombé sur quelques problèmes. Dans ma quête pour créer un code aussi rapide que possible, je me suis retrouvé incapable de comprendre deux choses.
Mon code (pertinent) est le suivant:
$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());
Les deux choses que je ne peux pas comprendre sont:
1) Comment récupérer l'URL du produit? url_key
ne donne pas toujours la bonne URL, car tous les webshops n'utilisent pas d'URL canoniques, ou n'ont pas la catégorie dans l'URL.
2) Comment puis-je obtenir l'image du produit avec une largeur / hauteur définie, au lieu de l'image complète? La ->resize()
fonction ne fonctionne pas dans ce cas je recon (car elle retourne une URL). De plus, est-il possible d'obtenir le Base Image
, Small Image
et Thumbnail
séparément?
Mon objectif principal est de garder le code aussi vite que possible. Je n'ai qu'un identifiant de produit, car je parcourt les enfants d'un produit. Je ne souhaite pas l'utiliser ->load()
car cela prend beaucoup plus de temps de chargement.
la source
small_image
. Il semble que les petites images soient toutes redimensionnées et ne sélectionne pas la variante redimensionnée. Une idée de comment résoudre ça? Et avez-vous également une solution pour l'URL du produit?la source
Essayez le code mentionné ci-dessous pour obtenir l'URL de l'image:
OU
OU
la source
Vous ne pouvez pas vous passer de la variable $ products / $ product:
Pour l'URL du produit:
// vous ne pouvez pas empêcher cette méthode d'ajouter ___store à l'URL, même en définissant _store_to_url sur false
** // vous ne pouvez pas arrêter cette méthode en ajoutant ___store à l'URL, même en définissant _store_to_url sur false // note - voir la section "using _ignore_category" ci-dessous pour un bogue discutable avec l'utilisation de ce paramètre **
Pour l'image du produit:
Si vous souhaitez utiliser l'URL de l'image dans le tag,
la source
$product->getUrlPath();
, en obtenant leurl_key
. C'est donc possible sans la$product
variable. Cela me fait croire qu'obtenir l'image du produit et la redimensionner devrait également être possible sans charger le produit entier. (donc pas d'utilisation deMage::getModel('catalog/product')->load($productId);
)Je veux ajouter 1 ligne de code au commentaire de mpaepper, qui, je pense, est une excellente solution dans des scénarios spécifiques. Je l'ai utilisé en boucle sur une page où je n'avais pas d'objet produit pour charger l'image via le modèle de produit.
Lorsque vous ne souhaitez pas charger une image avec un objet produit, vous pouvez utiliser l'approche mpaepper exlpains. N'oubliez pas d'enregistrer l'image créée manuellement lorsque vous utilisez cette solution. Lorsque vous enregistrez l'objet image, il crée un fichier cache comme le font également les images Magento normales.
Le code complet devrait donc être:
la source
L'image du produit est accessible de la manière suivante:
Pour redimensionner l'image, vous pouvez ajouter ceci:
Pour obtenir l'URL du produit:
Ici, $ _products est le produit lui-même et non l'ID produit;
la source
$_products
variable, car cela m'obligerait à charger le produit dans son intégralité. Et charger tous les produits que je parcourt créerait des temps de chargement de quelques secondes, ce qui est trop.