Tôi đang lặp qua các sản phẩm và gặp lỗi với hình ảnh sản phẩm.
Mã tôi đang làm việc với bên dưới:
<?php
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('status', 1); // 1=Enabled, 2=Disabled
$obj = Mage::getModel('catalog/product');
?>
<?php $productCounter=1; ?>
<?php foreach ($collection as $product): ?>
<?php $_productInCollection = $obj->load($product->entity_id); ?>
<li class="item text-center">
<a class="product-image" title="<?php echo $_productInCollection->getName(); ?>" href="<?php echo $_productInCollection->getProductUrl(); ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_productInCollection, 'small_image')->resize(null, 152)->keepFrame(false); ?>" height="152" alt="<?php echo $this->stripTags($this->getImageLabel($_productInCollection, 'small_image'), null, true) ?>" />
</a>
</li>
<?php if ($productCounter >=26) : ?>
<?php break; ?>
<?php endif; ?>
<?php $productCounter ++; ?>
<?php endforeach; ?>
Các thuộc tính như tên đang được xử lý tốt nhưng tôi đang gặp một lỗi lạ với hình ảnh sản phẩm. Khoảng 75% sản phẩm tôi đang làm việc không có hình ảnh nên sẽ hiển thị hình ảnh giữ chỗ mặc định, nhưng tôi đang nhận được một mẫu lạ:
PRODUCT 1 -> has no image in admin panel -> SHOWS PLACEHOLDER (correct)
PRODUCT 2 -> has no image in ap -> SHOWS PLACEHOLDER (correct)
PRODUCT 3 -> has an image in ap -> SHOWS PRODUCT 3 IMAGE (correct)
PRODUCT 4 -> has no image in ap -> SHOWS PRODUCT 3 IMAGE (wrong, should show placeholder)
PRODUCT 5 -> has no image in ap -> SHOWS PRODUCT 3 IMAGE (wrong, should show placeholder)
PRODUCT 6 -> has no image in ap -> SHOWS PRODUCT 3 IMAGE (wrong, should show placeholder)
PRODUCT 7 -> has an image in ap -> SHOWS PRODUCT 7 IMAGE (correct)
PRODUCT 8 -> has no image in ap -> SHOWS PRODUCT 7 IMAGE (wrong, should show placeholder)
PRODUCT 9 -> has no image in ap -> SHOWS PRODUCT 7 IMAGE (wrong, should show placeholder)
PRODUCT 10 -> has an image in ap -> SHOWS PRODUCT 10 IMAGE (correct)
Ngay khi một sản phẩm có hình ảnh xuất hiện trong vòng lặp, sản phẩm đó sẽ xuất hiện tốt, nhưng nếu sản phẩm tiếp theo trong vòng lặp không có hình ảnh, nó sẽ hiển thị hình ảnh sản phẩm trước đó thay vì giữ chỗ. Tôi đã thử nó với getImageUrl()
quá và mô hình tương tự xảy ra.
Tôi tự hỏi nếu nó là một vấn đề bộ nhớ đệm hoặc chỉ là hình ảnh không được thiết lập lại mỗi lần? Bất kỳ trợ giúp sẽ được đánh giá rất nhiều, cảm ơn bạn!
Tôi đang sử dụng Magento ver. 1.7.0.2.
EDITED - GIẢI QUYẾT: Nhờ Marius bên dưới, đây là mã tôi đang sử dụng.
<?php
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', 1);
// 1=Enabled, 2=Disabled
$collection->getSelect()->limit(25);
$productBlock=$this->getLayout()->createBlock("catalog/product");
?>
<?php $productCounter = 1; ?>
<?php foreach ($collection as $product): ?>
<?php if (($productCounter + 4) % 5 == 0) : ?>
<ul class="products-grid">
<?php endif; ?>
<li class="item text-center">
<h3><?php echo $product->getName(); ?></h3>
<img src="<?php echo $this->helper('catalog/image')->init($product, 'small_image')->resize(null, 152)->keepFrame(false); ?>" height="152" alt="<?php echo $this->stripTags($this->getImageLabel($product, 'small_image'), null, true) ?>" />
<?php echo $productBlock->getPriceHtml($product,true); ?>
<a href="<?php echo $product->getProductUrl() ?>" title="<?php echo $product->getName(); ?>" class="more-info">
More info
</a>
</li>
<?php if ($productCounter % 5 == 0 || $productCounter == $collection.length) : ?>
</ul>
<?php endif; ?>
<?php endforeach; ?>
load()
ing trong một vòng lặp! Nhận bộ sưu tập để tải thông tin thuộc tính mà bạn cần.