ownerDocument; $domElement->appendChild($domOwner->createCDATASection("{$value}")); } } /** * Add child node with value as CData * * @param string $name The child XML node name to add * @param string $value A text to add as CData * @return SimpleXMLElement */ public function addChildWithCData($name = '', $value = '') { $newChild = parent::addChild($name); if ($value) $this->addCDataToNode($newChild, "{$value}"); return $newChild; } /** * Add value as CData to the current XML node * * @param string $value A text to add as CData * @return void */ public function addCData($value = '') { $this->addCDataToNode($this, "{$value}"); } } $context = Context::getContext(); $id_lang = (int)Context::getContext()->language->id; $start = 0; $limit = ''; $order_by = 'id_product'; $order_way = 'DESC'; $id_category = false; $only_active = true; $products_partial = Product::getProducts($id_lang, $start, $limit, $order_by, $order_way, $id_category, $only_active, $context); $products = Product::getProductsProperties($context->language->id, $products_partial); $xml = new SimpleXMLElementExtended(''); $xml->addChild('title', 'Redline'); $xml->addChild('updated', date('Y-m-d')); foreach ( $products as $product ) { $product_combinations = false; $combination_tmp = false; $product_csv = false; $product_tmp = new Product( $product['id_product'] ); $combinations = $product_tmp -> getAttributeCombinations( $context -> language -> id, true ); foreach ( $combinations as $com ) { $combination_tmp[ $com['id_product_attribute'] ][] = $com; } foreach ( $combination_tmp as $key => $val ) { $product_com['id_product_attribute'] = $key; $product_com['quantity'] = Product::getQuantity( $product['id_product'], $key ); $product_com['reference'] = $val[0]['reference']; foreach ( $val as $row ) { if ( $row['group_name'] == 'Rozmiar' ) $product_com['gsize'] = $row['attribute_name']; if ( $row['group_name'] == 'Rodzaj' ) $product_com['gsize'] = $row['attribute_name']; } $product_combinations[] = $product_com; } if ( is_array( $product_combinations ) and count ( $product_combinations ) ) { foreach ( $product_combinations as $product_combination_tmp ) { $product_csv = false; $cover = Product::getCover($product['id_product']); $products['id_image'] = $cover['id_image']; $link = new Link; $product_csv['id'] = $product['id_product'] . $product_combination_tmp['id_product_attribute']; $product_csv['title'] = $product['name']; $product_csv['description'] = str_replace( array("\n", "\r"), '', strip_tags( $product['description_short'] ) ); if ( $product_combination_tmp['quantity'] > 0 ) $product_csv['availability'] = 'in stock'; else $product_csv['availability'] = 'out of stock'; $product_csv['inventory'] = $product_combination_tmp['quantity']; $product_csv['condition'] = $product['condition']; $price = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, false); $price_sale = Product::getPriceStatic($product['id_product'], true, $product_combination_tmp['id_product_attribute'], 2, null, false, true); if ( (float)$price_sale != 0 and $price_sale != $price ) $product_csv['price'] = $price_sale; else $product_csv['price'] = $price; $product_csv['link'] = $product['link']; $product_csv['image_link'] = 'https://' . $link -> getImageLink( $product['link_rewrite'], $products['id_image'], 'large_default' ); $product_csv['brand'] = $product['manufacturer_name']; $product_csv['google_product_category'] = ''; if ( $product_combination_tmp['gsize'] != null) $product_csv['size'] = $product_combination_tmp['gsize']; } if ( $product_csv['id'] ) $products_csv[] = $product_csv; } else { $price = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, false); $cover = Product::getCover($product['id_product']); $products['id_image'] = $cover['id_image']; $link = new Link; $product_csv['id'] = $product['id_product']; $product_csv['title'] = $product['name']; $product_csv['description'] = str_replace( array("\n", "\r"), '', strip_tags( $product['description_short'] ) ); if ( $product_combination_tmp['quantity'] > 0 ) $product_csv['availability'] = 'in stock'; else $product_csv['availability'] = 'out of stock'; $product_csv['inventory'] = $product_combination_tmp['quantity']; $product_csv['condition'] = $product['condition']; $price = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, false); $price_sale = Product::getPriceStatic($product['id_product'], true, $product_combination_tmp['id_product_attribute'], 2, null, false, true); if ( (float)$price_sale != 0 and $price_sale != $price ) $product_csv['price'] = $price_sale; else $product_csv['price'] = $price; $product_csv['link'] = $product['link']; $product_csv['image_link'] = 'https://' . $link -> getImageLink( $product['link_rewrite'], $products['id_image'], 'large_default' ); $product_csv['brand'] = $product['manufacturer_name']; $product_csv['google_product_category'] = ''; if ( $product_csv['id'] ) $products_csv[] = $product_csv; } } // echo '
' . print_r( $products_csv, true ); exit;
if ( $products_csv )
{
  $fp = fopen( 'csv-products.csv', 'w');
  fprintf( $fp, "\xEF\xBB\xBF");
  foreach( $products_csv as $line )
    fputcsv( $fp, $line );
  fclose( $fp );
}