Nieuw hier? Ontvang gratis updates van WebwinkelSucces + het e-book "Webwinkel Tactieken Onthuld":

Datafeed Magento voor Cleafs

Opzoek naar een Magento datafeed voor Cleafs? Hieronder de .php code die je kunt gebruiken om een Magento datafeed te maken voor het affiliate-netwerk Cleafs.

Zet de code in een PHP bestand en upload deze naar je server. Ga daarna via je browser naar de locatie van het bestand en je krijgt een keurg .xml bestand die geschikt is voor Cleafs.

De code is geschikt voor Magento 1.4.2 maar zal wellicht ook werken voor Magento 1.5 en hoger. Heb je de Cleafs datafeed werkend in Magento 1.5 laat hieronder even een reactie achter ;-) .

Je zult waarschijnlijk nog wel wat aanpassingen moeten maken om het voor je eigen Magento webwinkel geschikt te maken.

Let op: Er is een nieuwe Magento Feed Export voor Cleafs uit!

< ?php
require_once '../app/Mage.php';
Mage::app('default');

/** Correct working function to get the product's sizes **/
function productGetSizesString($product) {
$childIds = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($product->getId());
$sizes = array();
foreach($childIds[0] as $childId) {
$childProduct = Mage::getModel('catalog/product')->load($childId);
$sizes[] = $childProduct->getResource()->getAttribute('maat')->getFrontend()->getValue($childProduct);
}
return implode(';',$sizes);
}

/** Get product media images **/
function productGetImages($product) {
var_dump($product->getMediaGalleryImages());
}

$scriptName = $_SERVER["SCRIPT_NAME"];

try{
//---------------------- GET THE PRODUCTS
$products = Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToFilter('status', 1);//enabled
$products->addAttributeToFilter('visibility', 4);//catalog, search
$products->addAttributeToSelect('*');
$prodIds=$products->getAllIds();

$product = Mage::getModel('catalog/product');

$xml = new DOMDocument('1.0','UTF-8');
$root = $xml->createElement('productFeed');
$xml->appendChild($root);

//products can be iterated
foreach($prodIds as $productId) {
$product->load($productId);

$productXML = $xml->createElement('product');
$productXML->setAttribute('id', $product->getSku());

$appends = array();
$appends[] = $xml->createElement('name', htmlspecialchars($product->getName(), ENT_COMPAT, 'UTF-8'));
$appends[] = $xml->createElement('price', number_format ($product->getPrice(), 2, '.', ''));
$appends[] = $xml->createElement('description', htmlspecialchars($product->getShort_description(), ENT_COMPAT, 'UTF-8'));
$appends[] = $xml->createElement('productURL', str_replace($scriptName, '', 'http://www.eerlijkewereld.nl/' .$product->getUrlPath()));

$appends[] = $xml->createElement('imageURL', Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage());

$additional = $xml->createElement('additional');
$additional->appendChild ( $xml->createElement('deliveryCost', htmlspecialchars('5.95',ENT_COMPAT, 'UTF-8')) );
$additional->appendChild ( $xml->createElement('deliveryTime', htmlspecialchars('24 uur', ENT_COMPAT, 'UTF-8')) );

$imageProduct = Mage::getModel('catalog/product')->load($productId);
$imagesIterator = $imageProduct->getMediaGalleryImages()->getIterator();
$index = 1;
while( $imagesIterator->valid() ) {
$additional->appendChild ( $xml->createElement('imageURL'.$index, $imagesIterator->current()->getUrl()) );
$imagesIterator->next();
$index++;
}

if ($product->getResource()->getAttribute('merk'))
$additional->appendChild ( $xml->createElement('brand', htmlspecialchars( $product->getResource()->getAttribute('merk')->getFrontend()->getValue($product) , ENT_COMPAT, 'UTF-8' )) );

if ($product->getResource()->getAttribute('categorie1'))
$additional->appendChild ( $xml->createElement('category', htmlspecialchars( $product->getResource()->getAttribute('categorie1')->getFrontend()->getValue($product) , ENT_COMPAT, 'UTF-8' )) );

if ($product->getResource()->getAttribute('categorie2'))
$additional->appendChild ( $xml->createElement('category-extra-1', htmlspecialchars( $product->getResource()->getAttribute('categorie2')->getFrontend()->getValue($product) , ENT_COMPAT, 'UTF-8' )) );

$appends[] = $additional;

foreach ($appends as $a) $productXML->appendChild( $a );
$root->appendChild($productXML);

}

header ("content-type: text/xml; charset=utf-8");
print $xml->saveXML();

}
catch(Exception $e){
die($e->getMessage());
}
?>


Lees ook:
  1. Magento Feed Export voor Beslist, Vergelijk en Cleafs
  2. Cleafs
  3. Handleiding Magento Installeren voor je Webwinkel
  4. Magento extensies voor je webwinkel
  5. MailChimp Nieuwsbrief Plug-in voor Magento
Bekijk ook eens de populaire artikelen!
Reacties

  1. eva kock
    Dank je Kees dat je deze online wilde zetten. Heb hem geprobeerd, maar weet zeker dat ik of iets fout doe, of deze niet geschikt is voor magento 1.4.1.1. Kun je me zeggen of ik deze ook zou moeten kunnen gebruiken voor 1.4.1.1? Gr Eva
    Reply
  2. Kees van Dijk
    Hey Eva, Als je geen error krijgt dan is hij gewoon geschikt voor 1.4.1. Wanneer de feed het dus doet maar hij geeft aparte resultaten dan moet je zelf de atributen aanpassen. De feed is namelijk speciaal voor EerlijkeWereld en niet gemaakt als 'algemene feed'.
    Reply
  3. Patrick Heijmans
    Kees, Bedankt, zoals ik nu kan zien werkt deze ook in 1.5.0.1 Let wel even op dat er een foutje in de code staat; verander even de eerste 3 regels in: < ?php require_once $_SERVER['DOCUMENT_ROOT'] . "/app/Mage.php"; Mage::app('default'); Dan zou het allemaal moeten werken. Als het 100% werkt hoor je dit nog, ik wacht nu op een terugkoppeling van cleafs.
    Reply
  4. Patrick Heijmans
    De feed is correct! Ik vroeg me af of er nog meer extra velden in de additional gezet kunnen worden zoals bijv. category / subcategory ed? Misschien dat iemand dit weet ?
    Reply
  5. Kees van Dijk
    @Patrick De regel (het gaat om de; ..) moet je inderdaad even aanpassen wanneer je hem in direct in de root map upload. Zelf heb ik hem in een apart mapje zitten, waardoor ik de puntjes gebruik. Probeer dit anders eens voor de categorieën: $i = 0; foreach($product->getCategoryIds() as $_categoryId){ $category = Mage::getModel('catalog/category')->load($_categoryId); if ($category->getName()) { $additional->appendChild ( $xml->createElement('category' . ($i ? "-Extra-$i": ''), htmlspecialchars($category->getName(), ENT_COMPAT, 'UTF-8')) ); $i++; }
    Reply
  6. Jorg
    Ik heb dit script gebruikt voor modeltreinwinkel.nl. Echter, krijg ik een 404 error. Om te kijken of het script in versie 1.4.1.1 wel werkt, heb ik het in een andere shop geprobeerd. Daar werkt het prima. Kan iemand mij vertellen waar dit aan zou kunnen liggen? Alvast bedankt! Jorg
    Reply
  7. Joey
    Beste Kees, zou jij me misschien kunnen vertellen hoe ik een datafeed maak voor google shopping met magento? Ik kom er maar niet uit. Joey
    Reply
  8. Kees van Dijk
    @Joey, Daar is een plug-in voor. Ik geloof dat die 2 tot 3 tientjes kost. Maar ik heb geen idee meer waar ik die ooit gevonden heb.
    Reply
  9. Joey
    Dat is het probleem dus. Deze heb ik ook verschillende gezien maar ik heb problemen met mijn magento connect manager. Als ik deze vanuit de admin panel opstart krijg ik de foutmelding app/Mage.php was not found
    Reply
  10. Kees van Dijk
    @Joeuy, Weet je zeker dat het bestand er wel is? Anders moet je het bestand opnieuw in die map plaatsen. Het is nogal een belangrijk bestand. ;-)
    Reply
  11. Joey
    Beste Kees, het rare is dus dat dit bestand er gewoon staat. heb de bestandsrechten al een keer veranderd alleen dan krijg ik weer de 404 melding van page not found. Dit is echt irritant want ik kom er maar niet uit en heb zowat op ieder nederlands en engels magento forum deze vraag geplaatst en niemand die weet wat het is.. Het vervelendste is nog dat ik nu geen extensies kan instaleren, want de meeste extensies kun je niet los downloaden maar alleen via magento connect manager. Groeten Joey
    Reply
  12. eva kock
    Hoi Kees, Nog een vraag betreft de feed (als je nog niet op vakantie bent :)) Stel wij hebben meerdere site views draaien op 1 magento.... en meerdere catalogussen... En we willen de feed zo instellen dat deze niet de hoofd catalogus gebruikt maar een ander.. hoe kunnen wij dit doen?? Wat moet er in de code worden aangepast? Groet Eva
    Reply
  13. G-Star Jassen
    Thanks! ik ga mijn affiliate sites van affilistore overbrengen naar magento en dit scriptje gebruiken om de feeds te implementeren.
    Reply
    • Kees van Dijk
      Dit is een datafeed generator, dus geen importeer script. Een datafeed importeren in Magento s een heel ander (en moeilijker) verhaal. ;-)
      Reply

Geef een reactie

Connect with Facebook

Geld verdienen met webwinkels? Gratis nieuwsbrief updates:
  • Leer hoe je een succesvolle webwinkel-business begint.
  • Ontdek welke marketingmethodes jou meer salaris bezorgen.
  • Plus, lees welke fouten ik heb gemaakt.
Schrijf je nu in om deze tips te krijgen...