我有一个Magento网站,我在其中使用扩展程序,其中包括创建具有更好压缩的新产品图像并将其存储在专用路径下。 我还有一个构建xml站点地图的例程,包括图像。 我的问题是,当新图像加载到产品页面中时,我仍然可以从我的例程中获取/ media / catalog / product / cache /等旧的URL。
执行的代码是这样的:
$collection = Mage::getResourceModel('xsitemap/catalog_product_xml')
->getCollection($this->_storeId, false, $limit, $this->_counter);
$this->_counter += $limit;
foreach ($collection as $item) {
if ($isProductImages) {
$imageUrl = array();
$product = Mage::getModel('catalog/product');
$product->setStore($this->_storeId);
$product->load($item->getId());
if(is_object($product)) {
$imageObj = Mage::helper('catalog/image')->init($product, 'image');
$urlIm = $imageObj->__toString();
$imageUrl[] = $urlIm;
}
}
}
很明显,如果我从扩展程序外部运行此代码,使用Magento root下的临时类,我会为同一产品获取不同的URL,正好是新的图像URL。 如果说明相同,我不明白为什么我会得到不同的结果。 顺便说一下,我的临时课就是这样写的:
<?php
require_once 'app/Mage.php';
umask(0);
Mage::app();
class Pippo {
public $_helper;
public $_storeId;
public $_storeBaseUrl;
public function __construct() {
}
public function __init() {
$this->_storeId = 1;
$this->_helper = Mage::helper('xsitemap');
$this->_helper->init($this->_storeId);
$this->_storeBaseUrl = "http://www.example.com";
$isProductImages = $this->_helper->isProductImages();
$collection = Mage::getResourceModel('xsitemap/catalog_product_xml')
->getCollection(1, false);
foreach ($collection as $item) {
$url = $this->_storeBaseUrl . $item->getUrl();
//$lastmod = $this->_getItemChangeDate($item);
if ($isProductImages) {
$imageUrl = array();
$product = Mage::getModel('catalog/product');
$product->setStore($this->_storeId);
$product->load($item->getId());
if(is_object($product)) {
$imageObj = Mage::helper('catalog/image')->init($product, 'image');
$urlIm = $imageObj->__toString();
$imageUrl[] = $urlIm;
var_dump($imageUrl); exit;
}
}
}
}
}
$pippo = new Pippo();
$pippo->__init();
?>