Mientras construía una adición a una tienda web Magento, me topé con un par de problemas. En mi búsqueda por crear código lo más rápido posible, me encontré incapaz de resolver dos cosas.
Mi código (relevante) es el siguiente:
$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());
Las dos cosas que no puedo entender son:
1) ¿Cómo recupero la URL del producto? url_key
no siempre proporciona la URL correcta, ya que no todas las tiendas web utilizan URL canónicas o tienen la categoría en la URL.
2) ¿Cómo puedo obtener la imagen del producto con un ancho / alto establecido, en lugar de la imagen completa? La ->resize()
función no funciona en este caso Reconozco (ya que devuelve una URL). Además de eso, ¿es posible obtener el Base Image
, Small Image
y por Thumbnail
separado?
Mi objetivo principal es mantener el código lo más rápido posible. Solo tengo una identificación de producto, ya que recorro los elementos secundarios de un producto. No deseo usarlo, ->load()
ya que lleva mucho más tiempo de carga.
fuente
small_image
. Parece que todas las imágenes pequeñas se redimensionan, y no selecciona la variante redimensionada. ¿Alguna idea de cómo resolver eso? ¿Y también tiene una solución para la URL del producto?fuente
Pruebe el código mencionado a continuación para obtener la URL de la imagen:
O
O
fuente
No puede prescindir de $ productos / $ variable de producto:
Para la URL del producto:
// no puede detener este método agregando ___store a la URL, incluso estableciendo _store_to_url en false
** // no puede detener este método agregando ___store a la URL, incluso estableciendo _store_to_url en false // nota - vea la sección "using _ignore_category" a continuación para ver un error discutible con el uso de este parámetro **
Para la imagen del producto:
Si desea que la URL de la imagen se use en la etiqueta,
fuente
$product->getUrlPath();
, obteniendo elurl_key
. Entonces eso es posible sin la$product
variable. Eso me hace creer que obtener la imagen del producto y cambiar su tamaño también debería ser posible, sin cargar el producto completo. (así que no usoMage::getModel('catalog/product')->load($productId);
)Quiero agregar 1 línea de código al comentario de mpaepper, que creo que es una gran solución en escenarios específicos. Lo usé en un bucle en una página donde no tenía un objeto de producto para cargar la imagen a través del modelo de producto.
Cuando no desee cargar una imagen con un objeto de producto, puede usar el enfoque mpaepper exlpains. No olvide guardar la imagen creada manualmente cuando use esta solución. Cuando guarde el objeto de imagen, creará un archivo de caché como también lo hacen las imágenes normales de Magento.
Entonces el código completo debería ser:
fuente
Se puede acceder a la imagen del producto de la siguiente manera:
Para cambiar el tamaño de la imagen, puede agregar esto:
Para obtener la URL del producto:
Aquí $ _products es el producto en sí y no la identificación del producto;
fuente
$_products
variable, ya que eso me obligaría a cargar el producto en su totalidad. Y cargar todos los productos que estoy recorriendo crearía tiempos de carga de segundos, que es demasiado.