所以,我有一个每日cron作业运行一个文件,该文件调用另一个文件,它将我们的产品列表组合导出到XML文件。这是两个文件。
arrayxml.php
<?php
class ArrayXml {
private $xml;
public function __construct($root='store') {
$this->xml = new SimpleXMLElement("<$root></$root>");
}
private function iterate($element, $xmlNode) {
foreach($element as $name=>$value) {
if(is_string($value) || is_numeric($value)) {
$xmlNode->$name = $value;
}
else {
$xmlNode->$name = null;
$this->iterate($value, $xmlNode->$name);
}
}
}
public function toXML($array) {
$this->iterate($array, $this->xml);
return $this->xml->asXML();
}
}
?>
和export.php
<?php
header('Content-Type: text/xml');
include '../app/Mage.php';
include 'arrayxml.php';
Mage::app();
$_products = Mage::getModel('catalog/product')->getCollection();
$_result = array();
foreach($_products as $_product) {
$_product = $_product->load();
$categoryIds = $_product->getCategoryIds();
if (isset($categoryIds[0])){
$category = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($categoryIds[0]);
$categoryName = $category->getName();
}
$_result['products']['product'][] = array(
'productId' => $_product->getSku(),
'title' => $_product->getName(),
'description' => $_product->getDescription(),
'price' => $_product->getFinalPrice(),
'image' => 'http://dissios.com/media/catalog/product'.$_product->getImage(),
'url' => 'http://dissios.com/'.$_product->getUrlPath(),
'instock' => 'Y',
'availability' => 'Διαθέσιμο',
'category_id' => $categoryIds[0],
'category_name' => $categoryName
);
}
$_converter = new ArrayXML();
echo $_converter->toXML($_result);
$f = fopen("bestprice.xml", "w");
fwrite($f, $_converter->toXML($_result));
fclose($f);
?>
从那时起,我将网站拆分为单独的商店/视图,因此有两个域我希望产品具有URL,而不是父商店(上面代码中的dissios.com)。
我希望此代码能够检查商店代码并相应地调整网址,因此我需要http://eclock.gr/media/catalog/product'。$ _ product-&gt; getImage()作为一个和{{3} }'。$ _ product-&gt; getImage()为另一个。
谢谢!
编辑:解决了!这是我改变的代码:
// Get the product's store IDs
$storeCode = $_product->getStoreIds();
if ($storeCode[2] == '5') {
$_result['products']['product'][] = array(
'productId' => $_product->getSku(),
'title' => $_product->getName(),
'description' => $_product->getDescription(),
'price' => $_product->getFinalPrice(),
'image' => 'http://lourakiahirsch.gr/media/catalog/product'.$_product->getImage(),
'url' => 'http://lourakiahirsch.gr/'.$_product->getUrlPath(),
'instock' => 'Y',
'availability' => 'Διαθέσιμο',
'category_id' => $categoryIds[0],
'category_name' => $categoryName
);
}
else if ($storeCode[2] == '6') {
$_result['products']['product'][] = array(
'productId' => $_product->getSku(),
'title' => $_product->getName(),
'description' => $_product->getDescription(),
'price' => $_product->getFinalPrice(),
'image' => 'http://eclock.gr/media/catalog/product'.$_product->getImage(),
'url' => 'http://eclock.gr/'.$_product->getUrlPath(),
'instock' => 'Y',
'availability' => 'Διαθέσιμο',
'category_id' => $categoryIds[0],
'category_name' => $categoryName
);
}
else {
$_result['products']['product'][] = array(
'productId' => $_product->getSku(),
'title' => $_product->getName(),
'description' => $_product->getDescription(),
'price' => $_product->getFinalPrice(),
'image' => 'http://dissios.com/media/catalog/product'.$_product->getImage(),
'url' => 'http://dissios.com/'.$_product->getUrlPath(),
'instock' => 'Y',
'availability' => 'Διαθέσιμο',
'category_id' => $categoryIds[0],
'category_name' => $categoryName
);
}
答案 0 :(得分:0)
作为一种可能的方法,您可以存储您的商店&#39; ID(您可以在Magento Admin面板中找到它们)在一个数组中,然后使用以下内容循环它们:
foreach($arrayOfStores as $storeId) {
$store = Mage::app()->getStore($storeId);
然后你加载你的收藏:
$collection = Mage::getModel('catalog/product')
->getCollection()
->setStoreId( $storeId )
->addAttributeToSelect('*');